RailsAdmin - 将参数传递给范围
RailsAdmin - pass parameters to scopes
我在我的模型上定义了几个范围并在 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
我通过创建自定义操作解决了这个问题,然后指定它使用索引模板。它显示在列表、添加新项和其他操作旁边,而不是在过滤器下方。
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
相关问题
另一种方法是使用康康舞。您可以在能力文件中执行此操作:
def initialize(user)
can [:read], Profile, user_id: user.id
end
我在我的模型上定义了几个范围并在 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
我通过创建自定义操作解决了这个问题,然后指定它使用索引模板。它显示在列表、添加新项和其他操作旁边,而不是在过滤器下方。
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
相关问题
另一种方法是使用康康舞。您可以在能力文件中执行此操作:
def initialize(user)
can [:read], Profile, user_id: user.id
end