Это методы из Paperclip, которые можно использовать для удаления вложений:
# Clears out the attachment. Has the same effect as previously assigning
# nil to the attachment. Does NOT save. If you wish to clear AND save,
# use #destroy.
def clear(*styles_to_clear)
if styles_to_clear.any?
queue_some_for_delete(*styles_to_clear)
else
queue_all_for_delete
@queued_for_write = {}
@errors = {}
end
end
# Destroys the attachment. Has the same effect as previously assigning
# nil to the attachment *and saving*. This is permanent. If you wish to
# wipe out the existing attachment but not save, use #clear.
def destroy
clear
save
end
Итак, уничтожение удаляет вложение только в том случае, если не возникает ошибка. Я пробовал это с моей собственной установкой против S3, таким образом я знаю, что уничтожение работает.
Может ли проблема в вашем случае быть в том, что у вас есть какие-либо проверки, отменяющие сохранение? Т.е. validates_attachment_presence или что-то подобное?
Я думаю, что один из способов выяснить это - попробовать @ user.logo.destroy, а затем проверить содержимое @ user.errors, чтобы увидеть, сообщает ли он о каких-либо сообщениях об ошибках.