記事の概要
前回の記事の続き。前回は検索フォームに入力した文字列で、あるテーブルの複数カラムを対象に検索を実行した。今回はフォームに複数のワードを入力し、AND検索できるよう実装してみたので備忘録として。検索ワードは、例えば「旅行,グルメ」のように" , "で区切るとする。
複数ワードでAND検索
app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
def search
# フォームから検索ワードを取得
keywords = params[:keyword]
# モデルオブジェクトを生成
@articles = Article.all
# 検索ワードの分割
split_keywords = keywords.split(",")
# 分割したワードを一つずつ検索にかける
split_keywords.each do |word|
@articles=@articles.where(['カラム1 LIKE(?) OR カラム2 LIKE(?) OR カラム3 LIKE(?) OR カラム4 LIKE(?)',"%#{word}%", "%#{word}%", "%#{word}%", "%#{word}%"])
end
end
end