为什么我在Rails中为belongs_to关系获得nil?

时间:2010-03-03 21:03:58

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

我在Ruby on Rails应用程序中遇到问题,其中一个模型,其中belongs_to关系最终变为零。

鉴于以下模型:

 class Chassis < ActiveRecord::Base
   belongs_to :model
   belongs_to :chassis_size
 end

 class Model < ActiveRecord::Base
    has_many :chassis
 end

 class ChassisSize < ActiveRecord::Base
    has_many :chassis
 end

现在,我希望在我的机箱索引视图中,我会看到模型和chassis_size数据:

 <% @chassis.each do |chassis| %>
    <%= chassis.id %><br />
    <%= chassis.model.name %><br />
    <%= chassis.chassis_size.size %><br />
 <% end %>

但是我收到一个错误,就是chassis_size.size是nil:

 You have a nil object when you didn't expect it!
 You might have expected an instance of Array.
 The error occurred while evaluating nil.size    

查看数据库中的数据,一切看起来都是正确的。

我不确定为什么模型有效,但是chassis_size没有。我错过了什么?为什么chassis_size数据似乎没有加载?

1 个答案:

答案 0 :(得分:0)

您的chassis_sizes表中的大小是一列吗?

如果是这样,这是ruby中的保留字,因为它是返回数组长度的方法。

每个机箱都有chassis_size吗?试试这个:

<% @chassis.each do |chassis| %>
    <%= chassis.id %><br />
    <%= chassis.model.name %><br />
    <% if chassis.chassis_size %>
        <%= chassis.chassis_size.description %>
    <% else %>
        No chassis_size exists for this chassis
    <% end %><br />
 <% end %>