2011-02-10 10 views
9

2つの条件が真であるすべてのレコードを検索しようとしています。例:2つの条件が真であるすべてのレコードを見つける

ruby-1.8.7-p302 > Person.all 
=> #<Person name: "Jane", city: "Green Bay", state: "Wisconsin", single: true> 
=> #<Person name: "Dick", city: "Madison", state: "Wisconsin", single: false> 
=> #<Person name: "Tom", city: "Milwaukee", state: "Wisconsin", single: true> 

"Jane"と "Tom"レコードを取得したいとします。私はこれをしようとしているが、それは動作しません:

Person.find_all_by_state("Wisconsin").find_all_by_single(true) 

答えて

37

Person.where(:state => "Wisconsin", :single => true)

+2

は、新しいRubyで、あなたは '状態を行うことができますキー。 –

9

私はdmarkowの答えとなるだろうが、追加のトリビアを少しとして、あなたもこれを行うことができます:

Person.find_all_by_state_and_single("Wisconsin", true) 

チェーンは多くのフィールドを必要に応じて_and_を使用します。しかし、構文はwhereですが、これよりははるかに丁寧です。彼らは記号とのそれらのためのハッシュリテラル構文を変更したためtrue`を、:

+0

それははるかにきれいですが、これは実際に私のために働く。私はPlucky宝石を使用しており、where句を使用して期待される出力を得ていません。 – sybind

+1

user368937:これは、Rails 2の標準であった古い構文です。dmarkowはRails 3用です。 –

2

OR条件を使用した例:「ウィスコンシン」、シングル:レコードの

model_name.where("field_1 = ? OR field_2 = ?", params[:search_string], params[:search_string]) 
関連する問題