Используйте одно вложение для видео / изображения в скрепке - PullRequest
9 голосов
/ 22 августа 2011

Я использую скрепку для загрузки файлов (видео и изображений). Использовали одно и то же вложение (источник) для видео и изображений.

class Media < ActiveRecord::Base
  belongs_to :memory
  validates_attachment_presence :source
  validates_attachment_content_type :source,
    :content_type => ['video/mp4', 'image/png', 'image/jpeg', 'image/jpg', 'image/gif']
end

Теперь я хотел отображать разные сообщения об ошибках в разных случаях.

  1. Когда загружается файл типа изображения, но не jpg / png / jpeg / gif.
  2. Когда загруженный файл имеет тип видео, но не mp4

Как мне этого добиться? Любая помощь будет высоко ценится.

1 Ответ

22 голосов
/ 24 августа 2011

Итак, наконец-то я получил решение. Я добавил 2 условных проверки для того же

class Media < ActiveRecord::Base
  belongs_to :memory
  validates_attachment_presence :source
  validates_attachment_content_type :source,
    :content_type => ['video/mp4'],
    :message => "Sorry, right now we only support MP4 video",
    :if => :is_type_of_video?
  validates_attachment_content_type :source,
     :content_type => ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'],
     :message => "Different error message",
     :if => :is_type_of_image?
  has_attached_file :source

  protected
  def is_type_of_video?
    source.content_type =~ %r(video)
  end

  def is_type_of_image?
    source.content_type =~ %r(image)
  end
end
...