我几乎在所有模型中都使用了 ActiveAdmin 预加载。例如,这对我的 Coach 模型非常有用:
应用程序/管理员/coaches.rb
ActiveAdmin.register Coach do
controller do
def scoped_collection
Coach.includes(:addresses, :user, :sport, {:user => :user_metric})
end
end
end
然而,当我最近用我的搜索模型(我用它来记录用户所做的搜索)尝试同样的事情时:
应用程序/管理员/searches.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
我在急切加载中使用的常量是指一些内部 ActiveAdmin 模块而不是我的 ActiveRecord 模型。有没有办法防止这种名称冲突?也许 ActiveRecord::Search (或类似的东西)?或者可能这里完全发生了其他事情?
该常量Search
在站点上的其他任何地方都有效,并且 ActiveAdmin 搜索页面在尝试实现预加载之前运行良好。