私は断続的に(さまざまなプロジェクトで)rspecがActiveRecordオブジェクトをリロードし、関連するオブジェクトもクリアするという問題を抱えていました。
「動作するはず」で失敗した仕様の例は次のとおりです (テストの「良さ」は無視してください。これは単純化された例です)。
# Message has_many :message_attachments
# MessageAttachment belongs_to :message
describe Message, 'instance' do
before(:each) do
@it = Factory(:message)
(1..3).each do
@it.message_attachments << Factory(:message_attachment, :message => @it)
end
end
it 'should order correctly' do
# This test will pass
@it.message_attachments.collect(&:id).should == [1, 2, 3]
end
it 'should reorder correctly' do
@it.reorder_attachments([6, 4, 5])
@it.reload
# @it.message_attachments is [] now.
@it.message_attachments.collect(&:id).should == [6, 4, 5]
end
end