Case1 : 関連付けられたオブジェクト (Status.id ではなく Status オブジェクト) を割り当てて、モデルの新しいレコードを作成する
visit = Visit.create(:date => Date.today, :status => Status.first)
visit.status_id #=> 1
レコードを作成した後
属性 'status_id' (Status オブジェクトではなく Status.id) を更新しようとしていますが、オブジェクトを保存した後に reload を呼び出しても古い値が返されます。例:
visit.status_id = Status.last.id
visit.save
visit.reload
visit.status_id #=> 1
作成後に reload メソッドを呼び出すと、期待どおりに動作しています
visit = Visit.create(:date => Date.today, :status => Status.first)
visit.status_id #=> 1
visit.reload
visit.status_id = 2
visit.save
visit.status_id #=> 2
ケース 2: Status オブジェクトの代わりに「status_id」値を割り当てた場合、オブジェクトをリロードする必要はなく、正常に動作します。
visit = Visit.create(:date => Date.today, :status_id => Status.first.id)
visit.status_id #=> 1
visit.status_id = 2
visit.save
visit.status_id #=> 2
上記の 2 つのケースを使用すると、いつreload
メソッドを使用する必要がありますか? 前か後save
か?