【问题标题】:How to prevent ActiveRecord from saving unchanged serialized columns? [duplicate]如何防止 ActiveRecord 保存未更改的序列化列? [复制]
【发布时间】:2012-11-12 07:06:51
【问题描述】:

可能重复:
Stop ActiveRecord saving a serialized column even if not changed

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

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

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

我在 Rails 3.2.9 上。

【问题讨论】:

    标签: ruby-on-rails activerecord serialization ruby-on-rails-3.2


    【解决方案1】:

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

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

    在模型中,

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

    并且不会发生保存过程。

    但是我不明白这一点,当然,除非你在保存后做一些事情,你可以称之为改变吗?方法也适用于单个属性,以使其更加精确。

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 2014-10-29
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多