Rails belongs_to关联,在收集的一部分时无法访问所有者的属性?

时间:2010-03-09 17:25:45

标签: ruby-on-rails ruby belongs-to

我有一个对象,球,属于一个女孩,可以有很多球。一切都有效,但如果我试图通过以下方式打印出女孩的名字:

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

我收到以下错误:

"undefined method `name' for nil:NilClass"

这让我很困惑。如果我说b.girl.class,我把它作为Girl的一个实例,就好了。也就是说,它不是“NillClass”。

不仅如此,如果我只是尝试任何Ball,并说

@ball.girl.name

我很好。

那些让我搞砸的球的集合是什么?

编辑:

具体而言,这种情况发生在我看来。我现在正在测试它是否也发生在控制器中。

2 个答案:

答案 0 :(得分:5)

您的Ball实例没有关联的Girl。在访问girl属性之前,您需要检查以确保nil不是name

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

答案 1 :(得分:1)

Dangit,好吧,没关系。问题在于,由于某种原因,一些Ball Object实际上没有女孩(尽管大多数都是这样的,所以我试过的任何给定的Ball工作得很好,但如果我试图完成所有这些,其中一个会失败,并且视图错误只让我知道出了什么问题,而不是在哪里)