gpt4 book ai didi

ruby-on-rails - 更新属性后不保存 ActiveRecord

转载 作者:行者123 更新时间:2023-12-03 16:02:17 24 4
gpt4 key购买 nike

我想知道这里是否有一些我不明白的东西,或者我是否遇到了 ActiveRecord (4.1.1) 中的错误。

我有一个充满记录的数据库,只有一个属性,其中有一个 JSON 字段。我拿了一个,试着像这样更新它。

test = Submission.find(1)
test.update_attribute('json_data',similar_but_different_json(test.json_data))

让我们假设方法 similar_but_different_json对该 JSON 进行小幅更新。就我而言,我正在修复由损坏的表单创建的一些数据错误。

执行此操作时,我没有收到任何错误,我在控制台中显示提交但未提交任何数据并返回 true .

为了实际更新记录,我必须这样做。
test = Submission.find(1)
old_json_data = test.json_data
test.json_data = ""
test.json_data = similar_but_different_json(old_json_data)
test.save

似乎正在发生的事情是 ActiveRecord 没有识别出已经进行了必须保存的更改。这可能是为什么将字段设置为空字符串然后返回 JSON 允许记录保存?

最佳答案

will_change!
您还可以使用:

test.json_data_will_change!   # Goes before the save.

这将告诉 ActiveModel 属性 json_data , 已更改(即它很脏 ← 某处有一个笑话)并将在保存时正确更新值。

Rails is not saving an attribute that is changed了解更多详情。

关于ruby-on-rails - 更新属性后不保存 ActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583596/

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