回形针 – validation文件类型但不存在

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

我有这个:

class TestModel  ['audio/mp3', 'application/x-mp3'] end 

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

我还尝试为:if属性创建一个lambda过程,但是:if没有某种错误我就无法运行它。

这里有什么遗漏?

我猜你可以尝试’条件validation’,条件是文件是否存在?

 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 

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

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

我模特的大块:

  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(..)不会引发任何错误,但会validation我是否提供了文件。 也许你使用旧版的回形针?

 gem list | ack paperclip paperclip (2.3.1.1) 

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

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