2014-10-14 2 views
0

최근 레일을 레일 4.1.6으로 업그레이드했습니다.레일 - 레일 상태로 찾기 4

작업하는 데 사용이 쿼리 : 나는 로그를 확인하면

Couldn't find all Users with 'id': (all, {:conditions=>{:name=>"batman"}}) (found 0 results, but was looking for 2) 

내가 그 완전히 다른 쿼리를 수행하려고 레일 볼 수 있습니다

@user = User.find(:all, :conditions => { :name => 'batman' }) 

지금 나는이 오류 메시지를 :

User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" IN ('all', '--- 
:conditions: 
    :name: batman 
') 

id가 "all"이고 모든 사용자가 "{: conditions => {{: 이름 => "배트맨"}} ". 도와주세요.

UPDATE : 그 뒤에

내 진짜 문제는 내가 특정 사용자를 가져 와서 자신의 자동차, 블루 만 차를 추가 할 수 있었다. 예를 들어이 내 쿼리는 사용자 ID는 20

@user = User.joins(:cars).find(20, :cars => {:color => "blue"}) 

이다 그러나 나는이 오류를 얻을 :

Couldn't find all Users with 'id': (20, {:cars=>{:color=>"blue"}}) (found 41 results, but was looking for 2)

답변

1

당신은 확실히이 ActiveRecord Query Interface quide

User.where(name: "batman")

+0

예 많은 옵션이 있습니다. 이 문제에 대한 전체 섹션은 다음과 같습니다. - http://guides.rubyonrails.org/active_record_querying.html#retrieving-a-single-object 저는 ActiveRecord의 기초이며, 여러분에게 좋은 것을 줄 것입니다. 기금 –

+0

안녕하세요, 네 말이 맞아. 내 게시물을 업데이트했습니다. 이제 왜이 쿼리를 시도했는지 이해할 수 있습니다. – user2037696

+0

특정 사용자가 필요하면 기본 키 (예 : ID를 기본 키로 사용)를 사용하여 기본 키를 사용하십시오 :'''Client.find (ID)'''. –

-2

find을 읽어야을 메소드는이 버전의 레일즈에서 더 이상 사용되지 않습니다 (the reference 참조). 대신 where 메서드를 사용해야합니다. 귀하의 경우에는

, 이미 @user = User(:name => 'batman') 또는 @user = User(name: 'batman')

+0

내 게시물을 업데이트했습니다. 도와 주셔서 감사합니다. – user2037696

2

일부 다른 사람을 쓰기 지적한다 : 쿼리 구문이 변경되었습니다. 이 시도 : 그 기록이 발견되지 않는 경우이 빈 배열을 반환하는 예외를 일으킬 것

@user = User.joins(:cars).where(:cars => { :color => "blue" }).find(20) 

주 대신 전화 :

@user = User.joins(:cars).where(:id => 20, :cars => { :color => "blue" }) 

내가 읽고 제안 : http://guides.rubyonrails.org/active_record_querying.html


그가 자동차를 가지고 있지 않고 청색 자동차 만 표시하는 경우에도 사용자를로드하려면 다음과 같이하십시오.

@user = User.find(20)    # returns the user 
@user.cars.where(:color => 'blue') # returns the user's blue cars (or an empty array) 
+1

그래,이게 맞아. @spickermann은 나보다 빠르다. 잘 했어 .. –

+0

고맙습니다. 내가 찾고있는 것에 아주 가깝습니다 !! 유일한 것은 지금 사용자가 어떤 자동차도 가지고 있지 않을 때입니다. 사용자 19가 실제로 존재하더라도 오류 메시지가 나타납니다. " 'id'= 19 [WHERE"cars "."color "="blue " "]". 사용자가 자동차를 가지고 있지 않다면 나는 여전히 자신의 정보를 얻을 수 있기를 원하며 빈 "자동차"를 가지고 싶어합니다. [] – user2037696

+0

@ user2037696 : 업데이트 된 답변보기. – spickermann