我有一个带有时间戳列的模型,queued_at。
为什么 update_attribute(:queued_at, Time.now)
不写入数据库?这只是偶尔发生。这是一个经常更新的属性。 update_column 似乎一直有效。
我在 postgres 中使用 rails 3.2.12。
rails 3.1.11不存在该问题
这些项目展示了“问题”:
最佳答案
看起来 active_record 足够聪明,知道正在更新的值是否相同或足够接近(在时间戳的情况下),它将避免 SQL 写入 - 节省性能。我已经成功地通过在 update_attribute 调用之后“触摸”相关对象的模型来强制写入 updated_at 字段
foo.update_attribute :last_status, status
foo.touch
## log entry
## UPDATE `foo` SET `updated_at` = '2013-07-25 19:56:36' WHERE `foo`.`id` = 55
关于ruby-on-rails-3 - 为什么 update_attribute 不更改我的时间戳列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987821/