나는 이상한 문제가 있습니다.레일 3- find_by 작동하지 않습니다
두 모델 사이에 관계가 많은 사용자와 역할이 있습니다. 사용자의 역할 모음에서 이름이 'Administrator'인 역할을 필터링하려고합니다.
모델에서이 코드 화면
puts self.roles.to_s
인쇄 : [역할 ID : 1, 이름 : "관리자", created_at "2012-01-22 21시 55분 45초", updated_at : "2012-01-22 21시 55분 45초"]
그러나
puts self.roles.find_by_name('Administrator').to_s
아무것도 인쇄되지 않습니다이 코드. 그리고이 하나 :
puts self.roles.find_by_name('Administrator').nil?
인쇄 사실!
왜 내 find_by_name 메서드가 작동하지 않습니까? 콘솔에서 tryied하고 잘 작동합니다.
내 코드는 다음과 같습니다 :
puts self.roles.to_s
puts self.roles.find_by_name('Administrator').to_s
puts self.roles.find_by_name('Administrator').nil?
을 그리고 출력은 다음과 같다 : 내가 잘못
[Role id: 1, name: "Administrator", created_at: "2012-01-22 21:55:45", updated_at: "2012-01-22 21:55:45"]
<none>
true
을 뭐하는 거지? 그것은 바보 같은 것이어야합니다. 이 코드는 유효성 검사 메서드에 있으므로 사용자가 저장되기 전에 실행됩니다.
두 테이블 모두에 이름 열이 있습니까? – jstim
'find_by_name'을 호출 할 때 데이터베이스에서 새로운 역할이 있습니까? –
모두 질문에 대답 – Tony