2013-12-17 33 views
5

我有资源订单。在我的管理面板(activeadmin)中,我需要一个布尔过滤器来获取用户具有特定角色的所有订单。Active Admin Rails4自定义筛选器与Ransack

在Order类我有这样一个范围:

class Order 
    belongs_to :user 
    scope :client_only_in, -> { joins(:user).where('users.role = ?', 'client') } 
end 

在主动管理order.rb我已经添加后续过滤:

filter :client_only, as: :check_boxes 

使用Rails 3(元搜索)我可以添加

search_method :client_only_in, type: :boolean 

得到过滤器,但与轨道4和Ransack我不知道如何做到这一点。

不添加search_method到命令模式出现错误

undefined method `client_only_in' for Ransack::Search 

当我访问索引管理订单页面。

任何帮助?

回答

3

我不知道的方式做到这究竟,但你总是可以有一个选择字段来筛选基于用户角色:

filter :users_role, as: :select, multiple: true, collection: proc{ User.uniq.pluck :role } 

UPDATE:嗯,如果一个订单belongs_to用户比它应该是:user_role而不是:users_role

+0

我无法在Rails 4中获得此项工作。以下是我找到的解决方案:http://cavewall.jaguardesignstudio.com/2014/05/01/activeadmin-filters -with-洗劫/ – smcdrc