Carrierwave的条件版本/过程 [英] Conditional versions/process with Carrierwave

查看:55
本文介绍了Carrierwave的条件版本/过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个上载器类

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick

  process :resize_to_limit => [300, 300]

  version :thumb do
    process :resize_to_limit => [50, 50]
  end

 ...

它将原始文件处理为300x300并保存一个拇指版本。

Which will process the original file to 300x300 and save a thumb version.

我希望能够仅基于模型上的布尔值来制作小型/缩略图版本?

I would like to be able to make a small/thumb version only based on a boolean on my model?

所以我这样做了

if :icon_only?
 process :resize_to_limit => [50, 50]
else
  process :resize_to_limit => [300, 300]
end

protected

 def icon_only? picture
   model.icon_only?
 end

但是它总是以50x50的处理速度结束。即使我这样做了

But it always ended up in 50x50 processing. Even when I did like this

 def icon_only? picture
   false
 end

我的语法可能会完全错误:但是我也尝试过

I might got my syntax up all wrong with the : but i also tried asking

if icon_only?

告诉我没有这样的方法名称。我迷路了...

Which told me there was no method name like that.Im lost...

推荐答案

使用:if 有条件,例如:

process :resize_to_limit => [50, 50], :if => :icon_only?
process :resize_to_limit => [300, 300], :if => ...

我实际上并没有尝试过,但已记录在在代码中,因此应该可以使用。

I haven't actually tried this but it's documented in the code, so it should work.

这篇关于Carrierwave的条件版本/过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆