如何仅从已保存到数据库的项目中获取总计?

时间:2013-10-07 13:06:50

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

在我的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视图中实例化但尚未保存到数据库中。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

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

def total
  items.select(&:persisted?).map(&:total).sum
end
如果对象在数据库中(不是新的,未删除),则

persisted?true