2010-12-17 14 views

答えて

0

このようにチェーンしたい場合、あなたはちょっと掘り下げなければなりません。 this similar SO questionを参照してください。

4

Railsのような方法はありません。あなたが(「または」メソッドを持っていた)AREL方法を学びたいのであれば

User.where("first_name = ? OR last_name = ?", params[:first_name], "Wilson") 

私は句がある中でORを行う最も簡単な方法は、このような何かをすることを考えますここをクリックしてください:https://github.com/rails/arel#readme。 ARELとのActiveRecordを使用して、あなたはこのように同じことを行うことができます

User.where(User.arel_table[:first_name].eq(params[:first_name]).or(User.arel_table[:last_name].eq('Wilson'))) 
+0

訪問者への注釈: "Model.where( 'name =?OR name =?OR name =?'、 'South Carolina'、 '他の方法で問題を処理することもできますが、これもうまくいくでしょう –

2

あなたはmeta_whereを見てみることができます。この宝石は、Rubyコードでより強力なActiveRecordクエリ式を使用できます.SQLフラグメントを削除する必要はありません。

2

単にUser.where(cond1) | User.where(cond2)を使用すると、||ルビーによって予約されています!

+1

これは同じ結果を得ても実際は2つのSQLクエリを実行しており、Rubyを使用しています配列を使用して結果を1つの配列に連結します([Array#|](http://www.ruby-doc.org/core/classes/Array.html#M000275))。 'ActiveRecord :: Base.logger = Logger.new(STDOUT)'のようにSTDOUTにログするように指示すると、 'User.where(cond1)| 'と入力してSQLクエリを見ることができます。 User.where(cond2) '。 – dontangg

関連する問題