別に大した話ではないのだけど、よく忘れたり、あれ?ってなるときがあるので備忘録。
DBの更新をActiveRecordインスタンスにロードし忘れる
良くRspecで値が更新されたかどうか系をテストしたりするときに忘れることが多い気がする。
例えば、
describe do
before do
@user = User.find(1)
end
it do
User.first.update(name: 'hoge')
expect(@user.name).to eq 'hoge'
end
end
これはテストが通らないはず。
update
してる下に@user.reload
するか、@user.update
とARのインスタンスから更新処理を実行するようにすれば良い。(いろいろツッコミどころ満載だけど気にしない)
とりあえず、ActiveRecordインスタンス経由で更新が行われなかった場合、そのインスタンスに更新の影響は反映されない。反映させたいのならreload
しろということをちょっと覚えておきたかった