Ruby on rails Rails ActiveRecord更新头记录
我有一张资源发票和一张资源发票行 当我创建、更新或删除发票行时,父项发票的sum列应该更新 这在rails中是如何实现的?有一个选项可以传递给Ruby on rails Rails ActiveRecord更新头记录,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我有一张资源发票和一张资源发票行 当我创建、更新或删除发票行时,父项发票的sum列应该更新 这在rails中是如何实现的?有一个选项可以传递给属于关联。对于您的模型,您可以定义所属的关联,如下所示: class InvoiceLine < ActiveRecord::Base belongs_to :invoice, dependent: :destroy, counter_cache: :sum_column end class InvoiceLine
属于关联。对于您的模型,您可以定义所属的关联,如下所示:
class InvoiceLine < ActiveRecord::Base
belongs_to :invoice, dependent: :destroy, counter_cache: :sum_column
end
class InvoiceLine
请注意,您的发票
表中应该有列名称sum\u列
(例如上面的例子) 您可以通过回调来实现这一点,比如
class InvoiceLine < ActiveRecord::Base
after_destroy :calculate_invoice_sum
after_save :calculate_invoice_sum
belongs_to :invoice
def calculate_invoice_sum
if invoice
invoice.calculate_invoice_sum
end
end
end
class Invoice < ActiveRecord::Base
has_many :invoice_lines
def calculate_invoice_sum
# assuming InvoiceLine has an amount attribute
total = invoice_lines.sum(&:amount)
update_attribute(:sum, total)
end
end
class InvoiceLine
您可能希望在回调之前使用,而不是在回调之后使用,但我认为在这种情况下,after更有意义
我猜他想合计每个发票行的金额,我想计数器缓存只会更新发票行记录的计数?我也遇到了同样的问题。它如何知道要汇总的发票行列?如果它只计算子记录,那也很好,也很有用,但我想得到@house9所说的所有弹药的总和