【问题标题】:Paperclip - Validate File Type but not Presence回形针 - 验证文件类型但不存在
【发布时间】:2011-02-17 22:02:29
【问题描述】:

我正在使用回形针来处理我的文件上传,在一种情况下我不希望文件是强制性的。但是,我确实想确保它存在时是特定的文件类型。

我有这个:

class TestModel < ActiveRecord::Base
    #stuff
    has_attached_file :sound #etc...
    validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3']
end

当我没有声音文件时,它告诉我它不是有效的内容类型之一。我已经尝试将'' 添加到:content_type 数组中,这也不起作用!

我还尝试为 :if 属性创建一个 lambda 过程,但我无法让它在没有某种错误的情况下运行。

这里有什么遗漏吗?

【问题讨论】:

标签: ruby-on-rails validation paperclip


【解决方案1】:

我想您可以尝试“条件验证”,条件是如果文件存在?

class TestModel < ActiveRecord::Base
  #stuff
  has_attached_file :sound #etc...
  validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'], :if => :sound_attached?

  def sound_attached?
    self.sound.file?
  end
end

【讨论】:

  • 我意识到在从 Paperclip 2.3.1.1 升级到 Paperclip 2.3.2 后我必须这样做
【解决方案2】:

此问题已在较新版本的回形针中得到修复(我认为基于提交时间的 2.3.4 左右)。见讨论

https://github.com/thoughtbot/paperclip/issues/125

【讨论】:

    【解决方案3】:

    我的模型块:

      has_attached_file :logo, :styles => { :medium => ["300x300>", :png], :thumb => ["100x100>", :png] }
      validates_attachment_size :logo, :less_than => 2.megabytes
      validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif']
    

    如果我没有提供图像文件,@obj.update_attributes(..) 不会引发错误,但会验证我是否提供了文件。也许您使用的是旧版本的回形针?

    gem list | ack paperclip
    paperclip (2.3.1.1)
    

    【讨论】:

    • 我的版本是 2.3.2 并且有同样的问题 :(
    【解决方案4】:

    首先让我说我对 ruby​​ 和 rails 都是新手。其次,我不知道这是否可以应用于音频文件,但对于图像,我只是设置了一个默认图像,以便以一种或另一种方式与每条记录关联一张照片。

    has_attached_file :photo, styles: { small: "64x64", med: "100x100", large: "200x200" }, default_url: "/images/no-image-available.png"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 2014-04-22
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多