我在rails中遇到问题,我在两个模型(订单和状态)之间存在基本的多对多关系。这些模型如下所示:
class Order < ActiveRecord::Base
has_many :products, :through => :lines
has_and_belongs_to_many :statuses
default_scope order("#{table_name}.created_at desc")
end
和
class Status < ActiveRecord::Base
has_and_belongs_to_many :orders
end
在我的订单索引视图中,我显示订单的最新状态,所以order.statuses.last.name,但是,当我创建新订单时,我收到错误。此错误用于未定义的方法名称,因为新订单在首次创建时没有任何关系。
我的问题是,在保存新订单之前,有没有办法初始化我的两个模型之间的关系?我希望我的订单始终至少在我的状态集合中具有第一个状态,但不希望在保存之前必须手动检查它。
好措施的错误是:
undefined method `name' for nil:NilClass
我认为这一行:
<td><%= order.statuses.last.name %></td>
谢谢大家。
答案 0 :(得分:1)
一个简单的解决方法:
<td><%= order.statuses.last.name if order.statuses %></td>
答案 1 :(得分:0)
如果没有上次状态或最后一个状态没有名称
,则应注意这一点<td><%= order.statuses.last.try(:name) %></td>