找到两个条件为真的所有记录

syb*_*ind 12 ruby ruby-on-rails ruby-on-rails-3

我试图找到两个条件都成立的所有记录.例如:

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>
Run Code Online (Sandbox Code Playgroud)

我想得到"简"和"汤姆"的记录.我正在尝试这个,但它不起作用:

Person.find_all_by_state("Wisconsin").find_all_by_single(true)
Run Code Online (Sandbox Code Playgroud)

Dyl*_*kow 41

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

  • 为了记录,在较新的Ruby中,你可以做`state:"Wisconsin",single:true`,因为他们改变了那些带有Symbol键的Hash文字语法. (3认同)

Rya*_*igg 9

我会选择dmarkow的答案,但作为一些额外的琐事你也可以这样做:

Person.find_all_by_state_and_single("Wisconsin", true)
Run Code Online (Sandbox Code Playgroud)

_and_根据需要链接尽可能多的字段.然而,where语法比这更整洁.


小智 5

使用 OR 条件的示例:

model_name.where("field_1 = ? OR field_2 = ?", params[:search_string],  params[:search_string])
Run Code Online (Sandbox Code Playgroud)