連続更新

以下のようなロジックの場合、2回目の更新は無効になる。

user = User.new(:name => "David")
user.save
user.name = "koki"
user.save #<==これは無効

2回目のsaveは内部的にid=0であるレコードへのupdateを発行している。この場合、1回目のsaveのときはinsertなので、ActiveRecordはidの値を知らない(idの値はDBMSが決めるから)。そこでとりあえずid=0であるレコードへのupdateを発行しているものと思われる。1回目のsaveのタイミングでidを取得しておいてくれたらいいのに。
といっても上記のサンプルのようにデータをinsertしておいて、再取得もせずにそのままupdateというロジック自体が変な気もするのでべつに今のままでもいいのかもしれない。