ActiveRecordで動的なAND検索する
Rails4
最近Rails系の記事はgemを減らせというのをよく見るような気がしています。
Railsのバージョンアップに足を引っ張ったり、起動が遅くなる原因だそうです。
さて、ActiveRecordでAND検索です。
アプリの規模が小さいのであれば出番が多いのではと思います。
Rails4からallメソッドもリレーションを返すようになったみたいです。
class HomeController < ApplicationController def search @posts = Post.all if params[:q].present? params[:q].split(" ").each do |word| @posts = @posts.where("content like :q or name like :q", q: "%#{word}%") end end end end
「AKB 篠崎 炎上」という半角スペース区切りで複数キーワードがパラメータにあると、
半角スペースでsplitして、eachでぐるぐると抽出条件を増やしてリレーションを成長させていきます。
リレーション便利ですね。
AND検索で他の実装方法はどんなものがあるのでしょうか。