私はほとんどすべてのモデルでActiveAdminの積極的な読み込みを使用しています。たとえば、これは私のCoachモデルに最適です。
app / admin / Coaches.rb
ActiveAdmin.register Coach do
controller do
def scoped_collection
Coach.includes(:addresses, :user, :sport, {:user => :user_metric})
end
end
end
ただし、最近、検索モデル(ユーザーが行った検索を記録するために使用)でこれと同じことを試したとき:
app / admin / searchs.rb
ActiveAdmin.register Search do
controller do
def scoped_collection
Search.includes(:sport)
end
end
end
/ admin / searchesにアクセスしようとすると、次のエラーが発生します
NoMethodError in Admin::SearchesController#index
undefined method `includes' for
ActiveAdmin::ResourceController::Collection::Search:Module
app/admin/searches.rb:5:in `scoped_collection'
ここで発生している可能性があるのは、積極的な読み込みで使用している定数Search
が、ActiveRecordモデルではなく内部ActiveAdminモジュールを参照していることだと思います。この名前の衝突を防ぐ方法はありますか?たぶんActiveRecord::Search(またはそのようなもの)?それとも、ここで何か他のことが完全に起こっているのでしょうか?
定数Search
はサイトの他のすべての場所で機能し、ActiveAdmin検索ページは積極的な読み込みを実装しようとする前に正常に機能しました。