ActiveAdmin过滤器- 查找所有空字段

4

我有一个针对用户的ActiveAdmin过滤器菜单,其中列出了一堆过滤器,如下所示:

filter :id
filter :full_name
filter :age
filter :supervisor, collection: Supervisors.all

我想查询所有supervisor字段设置为nil的用户。我该怎么做?

如果您想查询没有主管的用户(假设您的主管字段为supervisor_id),为什么首先要过滤:supervisor - nayiaw
1
我希望用户能够选择特定的主管、任何主管或无主管。 - GMchris
1个回答

1
< p > 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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接