2011-02-10 15 views
9

Estoy tratando de encontrar todos los registros donde dos condiciones son verdaderas. Por ejemplo:buscar todos los registros donde dos condiciones son verdaderas

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> 

Quiero obtener los registros "Jane" y "Tom". Estoy tratando de esto, pero no funciona:

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

Respuesta

37

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

+2

Para el registro, en el más reciente Ruby, que puede hacer 'Estado: "Wisconsin", sola: true', porque cambiaron la sintaxis literal de Hash para aquellos con símbolo llaves. –

9

Me gustaría ir con la respuesta de dmarkow, sino como un poco de trivia adicionales También puede hacer esto:

Person.find_all_by_state_and_single("Wisconsin", true) 

Encadena tantos campos usando _and_ según lo desees. Sin embargo, la sintaxis where es mucho más nítida que esta.

+0

Es mucho mejor, pero esto en realidad me funciona. Estoy usando la gema Plucky y no está dando la salida esperada usando la cláusula where. – sybind

+1

user368937: Esta es la sintaxis antigua que era la norma en Rails 2. dmarkow's es para Rails 3. –

2

ejemplo usando una condición OR:

model_name.where("field_1 = ? OR field_2 = ?", params[:search_string], params[:search_string]) 
Cuestiones relacionadas