Rails ActiveRecord は部分的な更新をサポートしており、ほとんどの場合うまく機能しますが、ハッシュ フィールドをシリアライズした場合、AR は何も変更されていなくても毎回更新を実行します。Rails コンソールの例:
### Create class and table ###
>> class Xx < ActiveRecord::Base; serialize :params; end
=> Object
>> ActiveRecord::Base.connection.execute "CREATE TABLE xxes(id serial, params text)"
SQL (43.8ms) CREATE TABLE xxes(id serial, params text)
=> #<PGresult:0x112113380>
### Create record ###
>> r = Xx.create(:params => {:a => 1})
SQL (0.9ms) INSERT INTO "xxes" ("params") VALUES ('---
:a: 1
') RETURNING "id"
=> #<Xx id: 1, params: {:a=>1}>
### Find this record ###
>> x = Xx.find(1)
Xx Load (2.5ms) SELECT "xxes".* FROM "xxes" WHERE "xxes"."id" = 1 LIMIT 1
=> #<Xx id: 1, params: {:a=>1}>
### Change nothing and call save ###
>> x.save
AREL (1.1ms) UPDATE "xxes" SET "params" = '---
:a: 1
' WHERE "xxes"."id" = 1
=> true
回避策はありますか?