3

可能重复:
即使未更改,也停止 ActiveRecord 保存序列化列

serialize在 ActiveRecord 中有一个 d 列。它不跟踪脏状态,因为即使没有任何变化,它也会保存数据。

> p = Product.first
> p.save!
  UPDATE `products` SET `updated_at` = '...', `additional_data` = '--- \n' WHERE `products`.`id` = 2

有什么办法可以防止它在没有变化的情况下更新?

我在 Rails 3.2.9 上。

4

1 回答 1

0

这样做可能有更好的方法,但这里有

您可以使用 before_save 回调,如果没有任何改变则失败

在模型中,

before_save :check_for_changes

def check_for_changes
  if !self.changed?
    return false
  end
end

并且不会发生保存过程。

但是我不明白这一点,当然,除非您在保存内容后做一些事情,否则您可以称其为已更改?方法也可以使其更加精确。

于 2012-11-27T03:32:22.867 回答