2 つのモデルがあるとします。
class Post < ActiveRecord::Base
belongs_to :district
end
class District < ActiveRecord::Base
has_many :posts
end
check_boxes
投稿ページのActiveAdminでフィルターを作成して、ユーザーが特定の地区に属している、またはどの地区にも属していない投稿を取得できるようにする必要があります。
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
(ANDではなくORが必要です)。そして、私がするとき
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 ではありません)。