名前と設定が簡単なユーザーモデルがあります。ユーザーARELのすべての保存後に、設定列の更新が実行されます。例:Ruby on Railsは毎回シリアライズされた属性を更新します
user = User.find_by_name('kevin')
user.save
(0.3ms) UPDATE "users" SET "updated_at" = '2011-10-20 19:58:06.363541', "settings" = '--- {}' WHERE "users"."id" = 1
saveを呼び出すと、他のフィールドは更新されません。これは予想される動作ですか?なぜ更新を実行していますか?シリアライズされた内容が変更されていない場合、変更しないようにオフにすることはできますか?私は最低限のケースを作成するために使用するサンプルプロジェクトをアップロードしました:
http://cl.ly/0p0j3Z3Y0L1x1I1p3Z0g
あなたは上記の最初の行の直後にそれを呼び出す場合は、 'user.changes'の出力がどのようなものです:
は、以下の(ルビー1.8.7)のirbセッションを考えてみましょうか?属性のクラスを指定するとどうなりますか? 'serialize:設定、ハッシュ'? –
@Hordanがハッシュを指定することは役に立ちません。 'User.changes'は空のハッシュを返します。 –