だから私はたくさんのプロパティを持っています。ユーザーがテキスト ボックス params[:q] に用語を入力したクイック検索を行っており、ロットのすべてのフィールドを検索して一致するかどうかを確認しています。また、それらのプロパティを確認し、プロパティが一致する場合はロットのみを返します。
私はこのようにこれを達成します
if params[:q]
@property_lots = []
@lots.each do |lot|
@property_lots << lot if lot.properties.where(["name LIKE :query OR value LIKE :query", :query => "%#{params[:q]}%"]).any?
end
@lots = @lots.where(["number LIKE :query OR title LIKE :query OR description LIKE :query OR position LIKE :query OR notes LIKE :query OR notes LIKE :query OR buyer_id LIKE :query OR
display_type LIKE :query OR status LIKE :query", :query => "%#{params[:q]}%"])
@lots = @lots.merge(@property_lots)
@lots.uniq!
end
これに関する問題は、activerecord:relation が配列に変換されることです。これにより、ページネーション、後で追加されるスコープ、および並べ替えが壊れます。配列を作成せずにこれを行う方法はありますか?