Ruby on Rails: ограничьте тип файла с помощью Paperclip, используя флэш-загрузчик - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть довольно простая модель загрузки Paperclip, которая присоединена к модели пользователя через has_many, и я использую Uploadify для фактической загрузки. Flash отправляет все файлы с типом содержимого «application / octet-stream», поэтому использование validates_attachment_content_type отклоняет все файлы.

В моем действии создания я могу получить mime-тип из исходного имени файла, но только после того, как он был сохранен, с помощью:

def coerce(params)
  h = Hash.new 
  h[:upload] = Hash.new 
  h[:upload][:attachment].content_type = MIME::Types.type_for(h[:upload][:attachment].original_filename).to_s
  ...
end

и

def create
  diff_params = coerce(params)
  @upload = Upload.new(diff_params[:upload])
  ...
end

Как лучше всего составить список файлов белого списка?

Я думаю о методе before_validation, но я не уверен, как это будет работать. Любые идеи будут приветствоваться.

1 Ответ

1 голос
/ 19 февраля 2011

Я установил mimetype-fu и застрял в

before_validation :find_mimetype

def find_mimetype
    attachment = self.attachment.to_file.path
    file = File.open(attachment)
    mime = File.mime_type?(file)
    self.attachment.instance_write(:content_type, mime)
end
...