Day
タイムシートで1日を表すというモデルがあります。@day.save
オブジェクトのどのプロパティにも値が変更されていなくても、データベースへの書き込みを呼び出すたびに気づきました。
@day = Day.last
=> #<Day lunch_minutes: 0, updated_at: "2012-08-19 12:09:40", work_hours: 5.5>
1日の長さは時間単位で、昼休みの長さは分単位で保存されます。関連性のないいくつかのプロパティを切り抜いた。
@day.lunch_minutes
=> 0
@day.lunch_minutes = 0
=> 0
@day.changes
=> {"lunch_minutes"=>[0, 0]}
@day.lunch_minutes_changed?
=> true
それは誤りであるはずです。ゼロではない値と比較してください。
@day.work_hours = 5.5
=> 5.5
@day.work_hours_changed?
=> false
したがって、saveを呼び出すと、これが呼び出されます。理想的には、ここで不要なデータベースの相互作用がないでしょう。
@day.save
(0.5ms) UPDATE "days" SET "lunch_minutes" = 0, "updated_at" = '2012-08-19 12:22:59.586860' WHERE "days"."id" = 48
これがRailsのバグなのか、それともどこかで間違ったことをしているのかはわかりません。「changes_from_zero_to_string?」の問題のようです。-そのメソッドにを追加すると修正されると思います&& value != 0
-しかし、他の誰かがこれを見たことがあるかどうか/これに対する修正を以前に知りたいですか?