如果`validates_attachment_content_type`失败,请避免创建样式

时间:2011-05-09 16:55:03

标签: ruby-on-rails image-processing amazon-s3 paperclip

我正在使用Paperclip gem来管理Rails 3应用程序中的文件上传。我刚刚添加了

validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif'], :message => "should be \"PNG, GIF, or JPG\""

到我的模型,似乎有效,除了我在上传的图像上调用了4个样式,即使验证失败,它们似乎也被调用了。

以下是返回的验证错误...

Logo content type should be "PNG, GIF, or JPG"    Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.

如何停止处理(或尝试这样做)样式?

不确定是否重要,但图片存储在亚马逊s3中。

1 个答案:

答案 0 :(得分:0)

似乎这是Paperclip中的一个已知问题,没有人修复过。有一个Github issue on it但它已关闭。

另一种方法是使用before_post_process验证类型。有点像:

class Foobar
  before_post_process :check_content_type

  def check_content_type
    return ['image/jpeg', 'image/png', 'image/gif'].include?(logo.file_type)
  end
end

如果文件不适合这些内容类型,则应停止处理。