gpt4 book ai didi

ruby - Rails first_or_initialize 不更新记录

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:08 24 4
gpt4 key购买 nike

我正在使用下面的代码创建新记录或更新现有记录。创建有效,更新无效。

Signup.find_or_initialize_by(email: "text@example.com") do |signup|
signup.name = "John Doe"
signup.save
end
#Signup.find(email: "test@example.com").name = nil

不确定为什么 save 也会更新记录。 FWIW,我在下面尝试了一种不同的语法,它确实有效,不确定区别,但我想保留 find_or_initialize block 版本。

signup = Signup.find_or_initialize_by(email: "text@example.com")
signup.name = "John Doe"
signup.save
#Signup.find(email: "test@example.com").name = "John Doe"

最佳答案

只有在数据库中找不到匹配的行时才会调用该 block :您的第一个版本永远不会修改具有请求的电子邮件地址的现有行。

如果这就是您想要做的,那么您的第二个示例就是可行的方法。

关于ruby - Rails first_or_initialize 不更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25841612/

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