带有Ransack的Active Admin Rails4自定义过滤器

时间:2013-12-17 18:50:08

标签: ruby-on-rails filter ruby-on-rails-4 activeadmin ransack

我有资源订单。在我的管理面板(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页面时。

任何帮助?

1 个答案:

答案 0 :(得分:3)

我不知道如何做到这一点,但您总是可以根据用户角色选择要筛选的字段:

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

更新:啊,如果订单belongs_to用户应该是:user_role而不是:users_role