2014-10-23 3 views
0

Model.find_by_column(column_data)을 반환하면 Nil입니다. 그러나 생성 된 SQL을 rails db 콘솔 (postgresql db shell)에 복사하면 레코드가 나타납니다.레일스 find_by는 nil을 반환하지만 레코드는 존재합니다.

누구든지 무엇이 잘못 될 수 있는지 알고 계십니까?

예제 코드 :

garden = Garden.find_by_name("Zen Garden") 
puts garden.inspect 

결과 :

SELECT "gardens".* FROM "gardens" WHERE "gardens"."name" = 'Zen Garden' LIMIT 1 
Nil 

그러나 데이터베이스에

하기 :

SELECT "gardens".* FROM "gardens" WHERE "gardens"."name" = 'Zen Garden' LIMIT 1; 
id | name |   created_at   |   updated_at   
----+------------+----------------------------+---------------------------- 
82 | Zen Garden | 2014-10-23 03:56:25.614274 | 2014-10-23 03:56:25.614274 

무엇 가능성이 잘못 될 수 있을까?

+0

레일즈 콘솔에서 Garden.find_by를 실행 중이라고 가정합니까? 내가 묻는 이유는 두 환경에서 환경이 동일한 지 궁금해하기 때문입니다. – stefvhuynh

+0

이 옵션을 그냥 버리려면 Garden.where ('name LIKE?', '% Zen Garden %')를 사용해보십시오. 어쩌면 이름 끝에 또는 시작 부분에 공백이있을 수 있습니다. 어떤 버전의 레일즈를 사용하고 있습니까? –

답변

0

문제는 내가 create() 행을 복사하여 붙여 넣었으며 CodeIntel에서 update_attributes 대신에 실수로 update_all을 받아 들였습니다.

관련 문제