Как интегрировать Paperclip и Mimetype-fu
-
08-07-2019 - |
Вопрос
Сначала немного предыстории, потому что происходит много взаимодействия:Я получаю электронные письма через Fetcher и обрабатываю их с помощью MMS2R для извлечения вложений.Эти вложения обычно представляют собой файлы PDF или документы MS Word, поэтому можно ожидать, что их content-type
было бы application/pdf
и application/msword
соответственно, но, к сожалению, оказывается, что многие почтовые программы этого не делают.
Вместо этого вложения application/x-pdf
и application/x-doc
.Мне нужно, чтобы они были установлены правильно, чтобы scribd-fu правильно обрабатывал документы в формате iPaper.Теперь mimetype-fu сможет определить правильный тип контента, но я, хоть убей, могу понять, как правильно установить тип контента вложения скрепки.
Вот фрагмент кода:
mms.process do |media_type, files|
# go through each file
files.each do |filename|
# if it's a format we support, create a record
if media_type =~ /pdf/ # just pdfs for now, to reduce confusion
File.open(filename) do |tempfile|
# Somewhere in here I'd like to change filename.content_type
# to the proper type using mimetype-fu
# except doing tempfile.content_type = whatever doesn't seem to work.
thing = Thing.new
thing.document = tempfile
thing.save!
end
end
end
end
Любая помощь будет оценена по достоинству, потому что я бился головой о стену, пытаясь сделать все возможное, чтобы заставить это работать.Я уже пробовал эти ссылки либо безуспешно, либо не вникая в то, что нужно делать:
- http://gist.github.com/55009/
- http://railsforum.com/viewtopic.php?id=27448
- http://github.com/dbackeus/paperclip/commit/a514bd03664fc6a764787f59c3169397336702b1
Большое спасибо!
Решение
Можешь просто сделать
thing.document_content_type = whatever
или ты делаешь свой scribd-fu в document= или что-то в этом роде?