gpt4 book ai didi

ruby-on-rails - 使用ActiveRecord,有没有办法在after_update期间获取记录的旧值

转载 作者:行者123 更新时间:2023-12-03 05:16:38 27 4
gpt4 key购买 nike

使用简单示例进行设置:我有 1 个表 (Totals),其中保存每条记录的 amount 列的总和在第二个表(Things)中。

thing.amount 更新时,我只想将旧值和新值之间的差值添加到 total.sum 中。

现在,我在 before_update 期间减去 self.amount,并在 after_update 期间添加 self.amount。这让我们对更新的成功过于信任。

约束:我不想简单地重新计算所有交易的总和。

问题:很简单,我想在 after_update 回调期间访问原始值。您想出了哪些方法来做到这一点?

更新:我同意 Luke Francl 的想法。在 after_update 回调期间,您仍然可以访问 self.attr_was 值,这正是我想要的。我还决定采用 after_update 实现,因为我想在模型中保留这种逻辑。这样,无论我决定将来如何更新交易,我都会知道我正在正确更新交易总和。感谢大家提出的实现建议。

最佳答案

这与每个人对交易的看法相同。

也就是说...

Rails 2.1 中的 ActiveRecord 会跟踪对象的属性值。因此,如果您有一个属性 total,您将拥有一个 total_changed? 方法和一个返回旧值的 total_was 方法。

无需再向模型添加任何内容来跟踪此情况。

更新:这是 ActiveModel::Dirty 的文档按要求。

关于ruby-on-rails - 使用ActiveRecord,有没有办法在after_update期间获取记录的旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/607069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com