我有一个针对用户的ActiveAdmin过滤器菜单,其中一堆列出如下:
filter :id
filter :full_name
filter :age
filter :supervisor, collection: Supervisors.all
我想查询所有用户的主管字段设置为nil。我怎么能这样做?
答案 0 :(得分:1)
filter
本身不允许您搜索空白,我认为您必须通过向您的用户模型添加搜索引擎来解决此问题:
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的Supervisor,允许搜索“no supervisors”,id = 0被ransacker变为nil