gpt4 book ai didi

ruby-on-rails - Rails,用脏了还是改了?带有 after_commit 的标志

转载 作者:行者123 更新时间:2023-12-04 00:04:48 25 4
gpt4 key购买 nike

我听说 rails 有一个脏/更改标志。是否可以在 after_commit 回调中使用它?

在我的用户模型中,我有:

after_commit :push_changes

def push_changes我想知道名称字段是否更改的方法。这可能吗?

最佳答案

你可以做一些事情来检查......

首先,您可以这样检查单个属性:

user = User.find(1)
user.name_changed? # => false
user.name = "Bob"
user.name_changed? # => true

但是,您还可以检查整个模型中哪些属性发生了变化:
user = User.find(1)
user.changed # => []
user.name = "Bob"
user.age = 42
user.changed # => ['name', 'age']

您还可以做更多事情 - 查看 http://api.rubyonrails.org/classes/ActiveModel/Dirty.html详情。

编辑:

但是,鉴于这发生在 after_commit回调,模型已经保存,这意味着在保存之前发生的更改的知识丢失了。您可以尝试使用 before_save回调以自己挑选更改,将它们存储在某处,然后在使用 after_commit 时再次访问它们。 .

关于ruby-on-rails - Rails,用脏了还是改了?带有 after_commit 的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155303/

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