【发布时间】:2016-04-09 12:20:56
【问题描述】:
我想知道这里是否有我不明白的地方在起作用,或者我是否遇到了 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 允许保存记录的原因吗?
【问题讨论】:
-
我还应该提到,这不是 Rails 的完整实现。我将 ActiveRecord 与 Sinatra 一起使用。
-
我认为
update_attribute已被弃用,而支持update_attributes? -
已弃用,但
update_attributes也会出现此问题。 -
我在 Rails 存储库上打开了一个问题,看看它是否有点在记录中。 github.com/rails/rails/issues/15146
标签: ruby-on-rails json activerecord