スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Rails】ActiveRecordでカラムの値を変更してsaveしても反映されない問題の原因

Ruby on RailsのActiveRecordで



といった具合でnameというカラムを「hoge」から上記のように「hoge , this is test name」に変えようとしてDBを更新しようと思っても更新されません。

こんな変更をしようと思ったのなら



このように代入処理をしないといけません。

ActiveRecordの仕樣で値に変更がカラムは更新されないという仕樣は有名ですが、値の変更の仕方によっては更新されないようです。

自分なりに考えてみると、変更が合った値があるかどうかはsaveメソッド呼び出しの前後のActiveRecordのオブジェクト自分自身の前後比較をするのかとイメージを持っていましたが、それだと一つのレコードに対してActiveRecordのオブジェクト2つを持たないといけないことになるのでかなり非効率ですね。
値を代入されて変更があったのかどうかだけをActiveRecordのオブジェクトは持っていて、変更があったカラムの値だけをsaveメソッドを通してDBのUPDATEをする、そんな挙動なんでしょうね。

無意識的に使ってるので改めて勉強になりました。

[参考リンク]
ActiveRecord で手動でカラム変更後,save しても変更が反映されない
スポンサーサイト

Tag:Rails  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。