2

私はほとんどすべてのモデルで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検索ページは積極的な読み込みを実装しようとする前に正常に機能しました。

4

1 に答える 1

1

@Fivellが推奨しているように、::Searchの代わりに試してくださいSearchSearchinへの参照app/admin/searches.rb:5は実際にはを参照しているようActiveAdmin::ResourceController::Collection::Searchです。

それでも問題が解決しない場合は、Searchクラスの名前を別の名前に変更することをお勧めします。名前の衝突により、奇妙なバグが発生する傾向があるためです...

幸運を!

于 2013-03-16T02:23:18.133 に答える