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

Pio*_*ioz 5 ruby-on-rails filter activeadmin ransack ruby-on-rails-4

我有资源订单.在我的管理面板(activeadmin)中,我需要一个布尔过滤器来获取用户具有特定角色的所有订单.

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

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

在活动管理员order.rb我添加了以下过滤器:

filter :client_only, as: :check_boxes
Run Code Online (Sandbox Code Playgroud)

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

search_method :client_only_in, type: :boolean
Run Code Online (Sandbox Code Playgroud)

得到过滤器,但使用rails 4和Ransack我不知道该怎么做.

如果不添加search_method订单模型,我会收到错误

undefined method `client_only_in' for Ransack::Search
Run Code Online (Sandbox Code Playgroud)

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

有帮助吗?

sea*_*ley 3

我不知道有什么方法可以做到这一点,但您始终可以有一个选择字段来根据用户角色进行过滤:

filter :users_role, as: :select, multiple: true, collection: proc{ User.uniq.pluck :role }
Run Code Online (Sandbox Code Playgroud)

更新:啊,如果订购一个用户而belongs_to不是:user_role:users_role