这是我的项目模型:
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) %>
我的其他选择是什么?
答案 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
。