我有一个针对用户的ActiveAdmin过滤器菜单,其中列出了一堆过滤器,如下所示:
filter :id
filter :full_name
filter :age
filter :supervisor, collection: Supervisors.all
我想查询所有supervisor字段设置为nil的用户。我该怎么做?
我有一个针对用户的ActiveAdmin过滤器菜单,其中列出了一堆过滤器,如下所示:
filter :id
filter :full_name
filter :age
filter :supervisor, collection: Supervisors.all
filter 本身不能让您搜索空白,我认为您需要通过向User模型添加ransacker来解决:
ransacker :by_supervisor, formatter: proc{ |v|
v=nil if v==0
data = User.where(supervisor: v).ids
data = data.present? ? data : nil
} do |parent|
parent.table[:id]
end
在ActiveAdmin模块中,使用普通过滤器的替代方案。
filter :supervisor, collection: [Supervisor.new(id: 0, name: 'None'), Supervisor.all].flatten
这提供了一个id为0的主管,允许搜索“无主管”,ransacker会将id=0转换为nil。
supervisor_id
),为什么首先要过滤:supervisor
? - nayiaw