2016-03-08 58 views
3

我对用户的ActiveAdmin滤镜菜单,有一群人,像这样列出:ActiveAdmin过滤器 - 找到所有有空白字段

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

我想查询谁是主管字段设置为所有用户零。我怎样才能做到这一点?

+0

为什么滤波器':SUPERVIS如果你想查询没有主管的用户(假设你的主管字段是'supervisor_id') – nayiaw

+1

我希望用户能够选择特定主管,任何主管或不主管。 – GMchris

回答

0

filter本身不允许您搜索的空白,我认为你必须要解决通过添加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,以允许搜索 “不监督员”,ID = 0由ransacker变成零

相关问题