1

在我的 Rails 应用程序中invoices,我有很多嵌套items的 .

class Invoice < ActiveRecord::Base

  attr_accessible :date, :number, :items_attributes

  has_many :items

  accepts_nested_attributes_for :items

  def total
    items.map(&:total).sum
  end

end

如何确保total仅计算items实际已保存到数据库的值?

现在,我的total还包括items仅在我的new视图中实例化但尚未保存到数据库中的内容。

谢谢你的帮助。

4

1 回答 1

3
def total
  items(true).map(&:total).sum
end

true强制重新items加载. 或者:

def total
  items.select(&:persisted?).map(&:total).sum
end

persisted?true,如果对象在数据库中(不是新的,不是删除的)。

于 2013-10-07T13:12:44.397 回答