rails undefined方法`id'为零:NilClass属于关系

时间:2016-03-20 13:05:24

标签: ruby-on-rails

这是我的项目模型:

class Item < ActiveRecord::Base
    has_many :props
end

这是我的道具模型(porp距离物业很短)

class Prop < ActiveRecord::Base
  belongs_to :item
end

我有这个问题。 当我创建道具时,我需要item_id。 但是如果没有这个id的项目 我会在这里收到错误:

<%= @prop.item.id %>

    <%= @prop.item.name %>

我该怎么办?

UPD:我可以检查它的存在,如<%= @prop.item.try(:name) %>我的其他选择是什么?

2 个答案:

答案 0 :(得分:0)

我建议使用NullObject。

class Item
  def self.null
    Item.new(name: 'null')
  end
end

@item = @prop.item || Item.null

然后此代码不会引发错误:

<%= @item.id %>

<%= @item.name %>

答案 1 :(得分:-1)

如此设置模型:

class Item < ActiveRecord::Base belongs_to :prop end

class Prop < ActiveRecord::Base has_one :item end

允许你打电话 @prop.item.id

注意模型定义中的单数has_one。 如果您想使用@prop.items.id关系,请致电has_many