Rails + Active Admin: Display name
activeadmin, ruby, ruby-on-rails, web-applications
Solution
Try
ActiveAdmin.setup do |config|
config.display_name_methods = [:active_admin_name, :display_name ...]
end
You can find this setting in `lib/active_admin/application.rb`
Problem
I am using Active Admin with Ruby on Rails and I am having an issue with the way that some models are shown in the panel. Taking the class `User` as an example, if I do not define any method to display it friendly, I see `#<User:00000006b47868>`. So Active Admin suggests implementing a method to specify, for each class, how to show it. According to the documentation (http://activeadmin.info/docs/3-index-pages/index-as-table.html), Active Admin looks for one of these methods to guess what to display, in the following order: `:display_name, :full_name, :name, :username, :login, :title, :email, :to_s` So having this method within the `User` class would solve the problem: ``` def display_name return self.id.to_s + '-' + self.full_name end ``` However, before using Active Admin, I was already using the method `display_name` with other purposes (for example, in views) in order to show the user name in a friendly way, and I do not want to show the same in Active Admin panel. I cannot change the name of the method because I use `display_name` in a lot of files along the project, and changing it would probably introduce bugs in the application. An ideal solution for this case would be to have something like an `active_admin_name` method that is used by Active Admin to show models in its panel. So the question is: Is there any way to have a method that is called by Active Admin instead of `display_name`? For example, to result in the following order: `:active_admin_name, :display_name, :full_name, :name, :username, :login, :title, :email, :to_s` I have searched in Active Admin documentation and in `config/initializers/active_admin.rb`, but I could not find a way to do it. Thanks!