开发者

Rails partial updates problem with hashes

开发者 https://www.devze.com 2023-04-05 15:27 出处:网络
Rails ActiveRecord support partial updates and it works well most of the time, but in case we have serialized hash field AR executes update every time, even if nothing has been changed. Here example f

Rails ActiveRecord support partial updates and it works well most of the time, but in case we have serialized hash field AR executes update every time, even if nothing has been changed. Here example from rails console:

### 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 ### 
>开发者_如何学JAVA> 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 

Are there any workaround?


x.save if x.changed?

http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html

0

精彩评论

暂无评论...
验证码 换一张
取 消