ActiveAdmin では検索条件に対象モデルのアソシエーションモデルを使用できます。
通常これはプルダウン(ドロップダウン)で表示されますが、この内容が #<ModelName:0x007f89845f8f88>
のように表示されてしまうことがあります。
この原因は ActiveAdmin の仕様によるものです。
下記の記述内容に従って表示名の取得を行っているので、これに該当するプロパティを持っていないモデルの場合、このような残念な表示になってしまいます。
# Active Admin makes educated guesses when displaying objects, this is
# the list of methods it tries calling in order
setting :display_name_methods, [ :display_name,
:full_name,
:name,
:username,
:login,
:title,
:email,
:to_s ]
手を尽くして調べたところ、下記のように記述すれば設定を上書きできるよ!という情報もあったのですが。。。
config.display_name_methods = [ :active_admin_name,
:display_name,
:full_name,
:name,
:username,
:login,
:title,
:email,
:to_s ]
残念ながら私の環境では上書きできませんでした。
厳密には反映されているようにみえるけれど、プルダウンの表示には影響せず。
他にも修正する必要があるのか、やり方が悪いのか、ソースを追うものの追いきれず諦めた感じです。
仕方がないので以下のように対処しています。
# for active admin
# label というプロパティを表示に利用したい
def display_name
self.label
end
# ユーザのプロパティに氏名を持っているので、display_name
# じゃなくて fullnameにしてみる(上かこちらかどちらかだけ追加)
def fullname
"#{first_name} #{last_name}"
end
要は [:display_name, :full_name, :name, :username, :login, :title, :email]
のいずれかがモデルにあれば良いので、他で問題になりにくいものをメソッドとして追加してあげれば良い訳です。
config で追加して反映できれば一番なのですけどね。。。
公式でも config で変えられるよって書いてあるので、何かの間違いでうまくいかなかっただけかもしれません。
参考にしたのはこの辺り。
Rails + Active Admin: Display name | Stack Overflow
rails activeadmin drop down menu on new and edit forms [duplicate] | Stack Overflow
Filter select show object instead of object name #728