rb-*_*rb- 4 activerecord json ruby-on-rails
我想知道这里是否有一些我不理解的东西,或者我是否遇到过ActiveRecord(4.1.1)中的错误.
我有一个数据库,里面只有一个属性,一个JSON字段.我拿一个并尝试更新它.
test = Submission.find(1)
test.update_attribute('json_data',similar_but_different_json(test.json_data))
Run Code Online (Sandbox Code Playgroud)
我们假设该方法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
Run Code Online (Sandbox Code Playgroud)
似乎正在发生的事情是ActiveRecord没有确定已经进行了必须保存的更改.这可能是为什么将字段设置为空字符串然后返回JSON允许记录保存?
Jos*_*ter 11
will_change!您还可以使用:
test.json_data_will_change! # Goes before the save.
Run Code Online (Sandbox Code Playgroud)
这将告诉ActiveModel属性,json_data已经改变了(即它是脏的 ←那里有一个笑话)并将在保存时正确更新值.
有关更多详细信息,请参阅Rails未保存已更改的属性.
| 归档时间: |
|
| 查看次数: |
4697 次 |
| 最近记录: |