2012-03-10 2 views
39

내가 다른 나라의 사용자를 가지고 있고 인덱스 액션레일 : 내 응용 프로그램에서 조건

@fromcanada = User.find(:all, :country => 'canada') 

이처럼하려고 노력

그들을 발견을 수행하고 싶지만 내가 가진 모든 찾기 오류

Unknown key: country 

그러나 내가 묻는 것은 열쇠가 될 수 있습니까? 내 데이터베이스 스키마 파일에서 사용자 테이블에 "국가"열이 있습니다. 내가 한 때

t.string "country" 

는 또한, 내가

<%= user.country %></p> 

당신이 설명 할 수이 왜 내 발견 모든 조건에 작동하지 않았다 할 수 있었다 모든

@users = User.all 

찾을? 내가 어떻게해야했는지 보여줘?

+1

어떤 레일 버전을 사용하고 있습니까? – James

+3

'@fromcanada = User.where (: country => 'canada'). 모두는 아마도 더 나은 스타일 일 것입니다. –

+0

@muistooshort 왜'all'을 호출해야합니까? 'User.all'을 호출 할 때 모든 사용자를 얻지 만'where '로 사용자를 필터링 할 때 의미를 얻지 못합니다 (초보자 질문에 대해 유감입니다). –

답변

67

시도해보십시오.

@fromcanada = User.find(:all, :conditions => { :country => 'canada' }) 

편집 : jason328는 지적 은, 위의 대답은 3.2에서 사용되지 않으며 업데이트 된 대답이 경우 아무도 코멘트를 읽을

@fromcanada = User.where(:country => 'canada') 
30

될 것이다. 더 나은 형식이 될 것입니다

@fromcanada = User.where(country: 'canada').all 

이전 대답의 코드는 3.2에서 더 이상 사용되지 않습니다.

레일 4를 사용하는 경우 all 메서드를 제거하면 충분합니다.

@fromcanada = User.where(country: 'canada').to_a 

to_a은 쿼리를 배열 형식으로 호출합니다.

+3

Relation # all의이 사용은 레일 4에서 더 이상 사용되지 않습니다. 원하는 경우 열심히로드하려면'all'을'load'로 대체하십시오. 그렇지 않으면'모두 '가 필요하지 않습니다. 당신의 대답은 잘못이 아닙니다. 나는 레일 4를 고대하고있다. – courtsimas

관련 문제