Мне нужно получить доступ к URL из вложения когда загрузка, как таковой, я должен определить метод after_flush_writes
как предлагается здесь https://github.com/thoughtbot/paperclip/issues/816Override Скрепка: метод Attachment
Как я могу добиться этого?
До сих пор я сделал это, но он не работает:
class ExcelFile < ActiveRecord::Base
belongs_to :insertion
has_attached_file :excel
validates_attachment_content_type :excel, content_type: [ "application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"]
def after_flush_writes
super
byebug
file = Roo::Excelx.new(self.excel.url(:original, timestamp: false))
input_from_generals self.id, file
input_from_financials self.id, file
end
Я пытался использовать after_commit
, after_create
обратных вызовов, чтобы иметь возможность получить доступ к self.excel.url
, но он не работает.
'after_flush_writes' должен быть определен в контексте' Paperclip :: Attachment class', иначе он не будет вызываться. Однако мои тесты показывают, что простые обратные вызовы 'after_create' или' after_save' работают нормально - вы должны иметь возможность использовать 'url' внутри этих обратных вызовов. – BoraMa
Спасибо! @BoraMa Я не могу сделать это с помощью after_create или after_save, и я думаю, что это потому, что скрепка выписывает файл через обратный вызов after_save. – Mario
Мой вопрос похож на этот http://stackoverflow.com/questions/19960471/paperclip-running-a-method-after-the-file-is-saved, но я не знаю, как они решили проблему. – Mario