我有资源订单。在我的管理面板(activeadmin)中,我需要一个布尔过滤器来获取用户具有特定角色的所有订单。
在Order类中,我有一个这样的范围:
class Order
belongs_to :user
scope :client_only_in, -> { joins(:user).where('users.role = ?', 'client') }
end
在主动管理订单中.rb我添加了以下过滤器:
filter :client_only, as: :check_boxes
使用rails 3(元搜索)我可以添加
search_method :client_only_in, type: :boolean
得到过滤器,但是使用rails 4和Ransack我不知道该怎么做。
如果不将search_method
添加到订单模型,我会收到错误
undefined method `client_only_in' for Ransack::Search
当我访问index admin orders页面时。
任何帮助?
答案 0 :(得分:3)
我不知道如何做到这一点,但您总是可以根据用户角色选择要筛选的字段:
filter :users_role, as: :select, multiple: true, collection: proc{ User.uniq.pluck :role }
更新:啊,如果订单belongs_to
用户应该是:user_role
而不是:users_role