在回形针中使用单个附件用于视频/图像

时间:2011-08-22 15:43:16

标签: ruby-on-rails-3 validation file-upload paperclip

我正在使用回形针上传文件(视频和图片)。 为视频和图像使用了相同的附件(来源)。

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
  3. 我怎样才能做到这一点? 任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:22)

所以最后我得到了解决方案。 我为同一个

添加了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