首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新建子模型时更新父模型总数

问新建子模型时更新父模型总数
EN

Stack Overflow用户
提问于 2015-10-25 23:54:03
回答 2查看 276关注 0票数 1

我有一个has_many销售的包装型号。

我想总结所有的销售收入和更新包装模型的total_revenue后,每次新的销售。

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-26 00:01:58

您想要使用活动记录回调。我可能会使用after_create。您可以添加如下代码:

代码语言:javascript
复制
class Sale < ActiveRecord::Base
  belongs_to :package
  after_create :update_package_revenue

  def update_package_revenue
    package.update(total_revenue: package.sales.sum(:revenue)) # substitute the correct code here
  end
end

这允许您在每次创建新的销售时运行代码。

票数 1
EN

Stack Overflow用户

发布于 2015-10-26 00:02:10

要实现这一点,一种简单的方法是使用如下设置:

代码语言:javascript
复制
class Package < ActiveRecord::Base
  has_many :sales

  def calculate_and_update_total_revenue
    update_attributes(:total_revenue, sales.sum(:revenue))
  end
end


class Sales < ActiveRecord::Base
  belongs_to :package
  after_create :update_parent_package

  private

  def update_parent_package
    package.calculate_and_update_total_revenue
  end
end

它为您提供了一个竞争条件电阻方法来增加总数(您可以为每个新的销售添加一个+self.revenue,但随后您将从多个执行上下文修改一个全局状态。

尽管如此,如果您编写这样的逻辑,您将最终得到fat模型,在一个大的应用程序中很难管理。

不如用中介对象代替呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33336489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档