【发布时间】:2013-10-31 02:43:19
【问题描述】:
鉴于我有两个模型:
class Post < ActiveRecord::Base
belongs_to :district
end
class District < ActiveRecord::Base
has_many :posts
end
我需要在帖子页面上的 ActiveAdmin 中创建一个check_boxes 过滤器,以便用户能够获取属于某些确切地区或根本不属于任何地区的帖子。
在 ActiveAdmin 将 MetaSearch 更改为 Ransack 之前,这可以通过自定义范围来完成。现在我没有任何想法。当我执行以下操作时:
filter :district_id_null, as: :boolean
filter :district, as: :check_boxes
它产生条件WHERE district_id IN (1,2,3) AND district_id IS NULL(我需要 OR 而不是 AND)。当我这样做时
filter :district, as: :check_boxes, collection: proc { District.unscoped.map { |x| [x.title, x.id] }.unshift ['Empty', 'null'] }
它产生条件WHERE district_id IN (0,1,2,3)(但在大多数 SQL 数据库中,NULL 不是 0)。
【问题讨论】:
标签: ruby-on-rails activeadmin ransack