我在我的模型上定义了几个范围,并在rails_admin中使用它们。
scope :foo , ->() { where(status: 'active')}
...
list do
scopes [nil, 'foo']
我想创建范围,我可以传递参数,然后从rails_admin加载。像这样:
scope :bar , ->(query) { where(status: query)}
但是因为RA不通过参数我一直在
wrong number of arguments (0 for 1)
有没有人有任何建议?我使用Rails 4.1.14与rails_admin 0.8.1和mongoid 5.0
答案 0 :(得分:2)
我通过创建自定义操作解决了这个问题,然后将其指定为使用索引模板。它显示在List,Add New和其他操作旁边,而不是下面的过滤器。
class Article
include Mongoid::Document
field :title, type: String
...
belongs_to :user, counter_cache: true
scope :by_user, ->(user) { where(user: user) }
...
end
# in rails_admin.rb
class Myarticles < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :collection do
true
end
register_instance_option :only do
Article
end
register_instance_option :controller do
proc do
@objects = Article.by_user(current_user)
render :index
end
end
end
答案 1 :(得分:0)
另一种方法是使用cancan。您可以在能力文件中执行此操作:
def initialize(user)
can [:read], Profile, user_id: user.id
end