3

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 ではありません)。

4

1 に答える 1