gpt4 book ai didi

ruby-on-rails - 保存对象时 after_save 如何工作

转载 作者:数据小太阳 更新时间:2023-10-29 06:36:05 25 4
gpt4 key购买 nike

如果我执行以下操作:

@user.name = "John"    
@user.url = "www.john.com"
@user.save

如果我使用after_save

@user.url = "www.johnseena.com"
@user.save

当我这样做时会发生什么?

我相信它应该保存值,因为“after_save”回调。

最佳答案

在我看来,如果你在 after_save 回调中调用 save 函数,除非你在开始处设置保护,否则它将陷入递归。像这样

class User < AR::Base
after_save :change_url

def change_url
#Check some condition to skip saving
url = "www.johnseena.com"
save #<======= this save will fire the after_save again
end
end

但是,除了放置守卫外,您还可以使用 update_column

def change_url
update_column(:url, "www.johnseena.com")
end

在这种情况下,它不会触发 after_save。但是,它会触发 after_update。因此,如果您对该回调有任何更新操作,那么您将再次进行递归:)

关于ruby-on-rails - 保存对象时 after_save 如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835029/

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