2011-02-10 4 views
9

두 조건이 모두 해당하는 모든 레코드를 찾으려고합니다. 예 :두 조건이 참인 모든 레코드를 찾으십시오.

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

, 새로운 루비를, 당신은'상태를 할 수 열쇠. –

9
내가 dmarkow의 대답과 함께 갈 것입니다,하지만 추가 퀴즈의 조금으로 당신이 할 수있는

:

Person.find_all_by_state_and_single("Wisconsin", true) 

많은 필드로 체인을 원하는대로 _and_을 사용합니다. where 구문은 이것보다 훨씬 더 깔끔합니다. 그들이 기호를 가진 사람들을 위해 해시 리터럴 구문을 변경하기 때문에, TRUE ':

+0

그것은 훨씬 깔끔하지만 실제로 이것은 저에게 효과적입니다. Plucky gem을 사용하고 있는데 where 절을 사용하여 예상 한 결과를 제공하지 않습니다. – sybind

+1

user368937 : 이것은 레일스 2의 표준 인 오래된 구문입니다. dmarkow는 레일즈 3 용입니다. –

2

예는 OR 조건을 사용하여 "위스콘신"단일 : 기록을 위해

model_name.where("field_1 = ? OR field_2 = ?", params[:search_string], params[:search_string]) 
관련 문제