• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Rails:findの条件指定(複数キーワード))

Railsのfindメソッドで複数キーワードを条件指定する方法

このQ&Aのポイント
  • Rails初心者がfindメソッドを使って複数キーワードを条件指定する方法について調べています。nameの部分に複数の検索語句をor条件で指定することは可能でしょうか?MySQLのバージョンは1.1.2です。
  • 簡単な検索モデルを作成しているRails初心者ですが、findメソッドを使った検索の条件指定で複数キーワードをor条件で指定する方法を知りたいです。現在のコードでは最初の検索語句しか認識されません。Railsのバージョンは1.1.2です。
  • Rails初心者がfindメソッドの条件指定で複数キーワードをor条件で指定する方法を知りたいです。現在のコードでは最初の検索語句しか認識されないため、複数の検索語句を指定する方法を教えてください。Railsのバージョンは1.1.2です。

質問者が選んだベストアンサー

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

最初の条件の文で、もし、nameに"%"が含まれていないなら @users = User.find(:all, :conditions => ["family_name LIKE ?%", name]) のように"?"のあとに"%"をつけます。 それから、複数の条件を指定するなら以下のようにします。(以下はLIKEを使っていません) @users = User.find(:all, :conditions => ["family_name = ? or family_name = ?", name1, name2]) "family_name = ?"を繰り返し記述するのが嫌なら、以下のような書き方もあります。 @users = User.find(:all, :conditions => ["family_name IN ( ? , ? )", name1, name2]) 動作テストはしていませんが・・・。この検索条件については、データベースのSQL文法の本を購入されると、参考になります。 「現場で使えるSQL/翔泳社」などもいいかもしれません。

param08
質問者

お礼

ありがとうございます。 複数の条件指定の最初のやり方は、and条件ではやっていましたが、or条件では試していませんでした。 質問の仕方が下手で申し訳ないのですが、やりたいことはもう少し複雑なので補足質問に書かせていただきます。 参考書まで紹介していただいてありがとうございました。

param08
質問者

補足

すみません。補足質問のほうが大きくなってしまいますが、やりたいことはこうです。 検索対象カラムは5つあって、そのそれぞれに検索キーワードが0~複数個あり、それらは配列に入っています。 それらのキーワードを使って同一カラム内はor条件で、異なるカラム同士はand条件で検索し、結果をページネーションしたいのです。 つまり、条件部分はこんな感じです。 (↓この書き方でいいのか自信ないのですが・・) @users = User.find(:all, :conditions => ["(id = ? or id = ? or id = ?) and (family_name = ? or family_name = ?)", id1, id2, id3, name1, name2]) ただし、配列に入っているキーワードの数はわかりません。 今はカラムごとに配列の要素ごとに検索して、結果を結合していますが、それではページネーションができません。 それぞれのカラムに対するキーワードの数が不明な場合、検索を行ってその結果をページネーションすることは可能でしょうか?

関連するQ&A

専門家に質問してみよう