[Ruby] sunspot で関連テーブルの複数カラムで絞り込み

Ruby の Solr を扱うラッパーライブラリ sunspot で、ちょっと複雑な絞り込みの条件を作ったのでメモ。

# Sunspot/Search
searchable do
  # 表示設定ON ( visibility.visible == true ) かつ、
  # 指定された権限(role_id) で絞り込む
  integer :role_ids_with_visible, multiple: true do
    visibilities.select { |visibility| visibility.visible == true }
      .map { |visibility| visibility.role_id }
  end
end

SQL だと 関連テーブルを join して、where visible = true and role_id = xxx みたいな絞り込みをするのと同じ感じ。