LoginSignup
4
4

More than 5 years have passed since last update.

ActiveRecord で手動でカラム変更後,save しても変更が反映されない

Posted at

半時間ほどハマったんだよなぁ….

ダメな例.

works_controller.rb
@work.log << "#{Date.today.to_s}: 作業を完了しました."
@work.save # log への変更は反映されていない!

良い例.

works_controller.rb
@work.log += "#{Date.today.to_s}: 作業を完了しました."
@work.save # log への変更が反映されている.

save が「変更のあったカラムのみ更新する」というエコ仕様で,カラムが変更されたかどうかの判定がこれもエコで,実際にレコードの前後の状態を比較する,なんて面倒なことはせず「代入が行われたかどうか」みたいなところでやっているらしい.

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4