0
개체를 삭제 한 후에도 개체를 계속 사용할 수 있습니다. 개체가 파괴 된 컨트롤러에 일반적인 방법이 있습니다.개체를 삭제 한 후에도 개체를 계속 사용할 수 있습니다. rails 5
def destroy
authorize @object, :update?
@attachment.destroy
redirect_to polymorphic_path(@object), notice: 'Attachment deleted!'
end
테스트 문제.
describe AttachmentsController do
before do
create_account_and_login
@ticket = FactoryGirl.create(:ticket, account: @account)
@attachment = FactoryGirl.build(:attachment, object: @ticket)
end
#--------------------------------------------------------------------------
describe '#destroy' do
it 'destroys the attachment' do
VCR.use_cassette_with_file 'save sailormoon.jpg and delete and check existance' do
@attachment.save!
expect {
delete :destroy, params: {id: @attachment.id, ticket_id: @ticket.id}
}.to change { @ticket.attachments.count }.by(-1)
expect(S3_BUCKET.object(@attachment.key).exists?).to be_falsey
end
expect(flash[:notice]).to be_present
expect(response).to redirect_to(ticket_path(@ticket))
end
end
end
평소와 다르지 않지만. delete :destroy, params: {id: @attachment.id, ticket_id: @ticket.id}
소위 파괴 방법. 개체가 제거되었으며 모두 정상입니다. 나는 @attachment.destroyed?
으로 확인했다. 그리고 true
을 얻었다. 하지만 개체를 계속 사용할 수 있습니다. @attachment.key
이 키를 반환했습니다. 왜? 이 동작은 레일 4 ~ 5로 업그레이드 한 후에 나타납니다.
@ attachachment 개체는 데이터베이스에서 삭제해야하지만 삭제하기 전에 작성된 메모리 내 복사본이 있으므로 계속 작업 할 수 있습니다. '@ attachment.reload'와 같은 것을하면, 발견되지 않은 예외가 발생합니다. –