2010-03-09 3 views
3

나는 소유하고있는 볼, 볼을 소유하고 있는데, 그것은 볼에 속할 수 있습니다. 모든 대부분의 작동하지만 내가 통해 소녀의 이름을 인쇄하려고하면 : 정말 날 혼란Rails belongs_to association, 컬렉션의 일부일 때 소유자의 속성에 액세스 할 수 없습니까?

"undefined method `name' for nil:NilClass" 

: 나는 다음과 같은 오류가

@balls.each do |b| 
    b.girl.name 
end 

. 내가 b.girl.class라고 말하면, Girl의 인스턴스로 받아 들인다. 즉, "NillClass"가 아닙니다.

뿐만 아니라, 그냥

@ball.girl.name 

을 어떤 공을 위해 그것을 시도하고 말한다면 나는 완벽하게 괜찮아요.

나를 괴롭히는 공 컬렉션에 대한 설명은 무엇입니까?

편집 :

특히 내 생각에는 이런 일이 일어나고 있습니다. 지금 컨트롤러에서 발생하는지 테스트하기 위해 테스트 중입니다.

답변

5

Ball의 인스턴스에는 연결된 Girl이 없습니다. 그녀의 name 속성에 액세스하기 전에 girlnil이 아닌지 확인하고 싶을 것입니다.

@balls.each do |b| 
    b.girl.name unless b.girl.nil? 
end 
+0

Oooo, 나는 그런 식으로 사용할 수 없다면 몰랐습니다. 그것은 내가 사용했던 if 문보다 훨씬 효율적입니다. – Jenny

1

Dangit, 괜찮아. 문제는 어떤 이유로 볼 오브젝트는 실제로 여자가 없다는 것입니다. (대다수의 경우 볼을 시도 했으므로 아무 문제가 없지만 모든 작업을 시도하면 그 중 하나가 실패하고 뷰 오류가 발생합니다. 단지 무언가가 잘못되었다는 것을 알려주는 것입니다.)