半時間ほどハマったんだよなぁ….
ダメな例.
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 が「変更のあったカラムのみ更新する」というエコ仕様で,カラムが変更されたかどうかの判定がこれもエコで,実際にレコードの前後の状態を比較する,なんて面倒なことはせず「代入が行われたかどうか」みたいなところでやっているらしい.