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 みたいな絞り込みをするのと同じ感じ。