Paperclip中的样式只有在它是图像的情况下[rails]

Ste*_*ier 8 ruby-on-rails paperclip

我正在使用paperclip上传各种文件(文本文档,二进制文件,图像).

我想把它放在我的模型中:

has_attached_file :attachment, :styles => { :medium => "300x300>", :thumb => "100x100>" }
Run Code Online (Sandbox Code Playgroud)

只有当它是一个图像时才必须执行这些样式.我尝试添加

if :attachment_content_type =~ /^image/
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Voy*_*yta 15

您可以使用before_<attachment>_post_process回调来暂停非图像的缩略图生成.如果您false在回调中返回,则不会尝试使用样式.

请参阅文档中的 "事件"部分

  before_attachment_post_process :allow_only_images

  def allow_only_images
    if !(attachment.content_type =~ %r{^(image|(x-)?application)/(x-png|pjpeg|jpeg|jpg|png|gif)$})
      return false 
    end
  end 
Run Code Online (Sandbox Code Playgroud)