3

重複の可能性:
変更されていない場合でも、シリアル化された列を保存する ActiveRecord を停止する

ActiveRecordにserialized 列があります。何も変更されていない場合でもデータを保存するため、ダーティ状態を追跡しません。

> 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 に答える