gpt4 book ai didi

ruby-on-rails - Rails 回调更改属性

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:50 25 4
gpt4 key购买 nike

我的用户模型中有一个 before_save 回调:

before_save :notify_management, :if => lambda { |u| u.approved }

这样做的目的是当人们将 approved 从 false 更改为 true 时通知管理层。但是,一旦它们变为 true,并对 User 模型进行任何类型的更改,就会调用此模型,而我不希望这样。我希望它仅在从 non true(nil 或 false)值更改为 true 时调用。

我怎样才能做到这一点?

最佳答案

所以首先让我们看看您的代码实际做了什么,

您正在触发 before_save 回调,因此每次创建或更新记录时 :notify_management 都会被调用。添加条件后,每当保存记录并且用户批准的属性为 true(false 以外的任何值时,都会调用 :notify_management)。

您只想在属性从 false 更改为 true 时执行此操作。所以使用:

before_save :notify_management, :if => lambda { |u| u.approved && u.approved_changed? }

通过添加第二部分,它只会在该属性发生变化时触发(从 false=>true 或 true=>false)并将其与您已经拥有的内容组合它只会在值从 false=> 更改时触发是的

希望这对您有所帮助。

关于ruby-on-rails - Rails 回调更改属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165096/

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