我的模型User和Request之间存在关系。 I.E. user_id
表中没有requests
字段。我有一个查找程序可以确定用户可以看到的请求与默认的ActiveAdmin调用
requests where user_id = x
我曾经假设如果我的User类中有一个名为requests
的方法调用了这个查找程序,那么ActiveAdmin就可以解决它,但它并没有。所以这里有一些代码。我之前认为这可以用来获取用户的请求:
class User
...
def requests
RequestFinder.new(self).find
end
...
end
然后我收到了这个错误:
PG::UndefinedColumn: ERROR: column requests.user_id does not exist
LINE 1: ...T 1 AS count_column FROM "requests" WHERE "requests"...
所以我想我应该覆盖请求控制器中的索引方法:
def index
@requests = RequestFinder.new(current_user).find.page(params[:page]).per(20)
end
但后来我收到以下错误:
First argument in form cannot contain nil or be empty
vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/form_helper.rb:432:in `form_for'
我不确定如何重新格式化我的请求控制器,以便从查找器而不是用户呈现请求。
答案 0 :(得分:1)
所以我按照惯例在发布#facepalm之后立即解决。
如果要将任何通用ActiveRecord :: Relation传递给活动管理员索引,只需覆盖scoped_collection
方法,确保添加分页,如下所示:
controller do
def scoped_collection
RequestFinder.new(current_user).find.page(params[:page]).per(20)
end
end