我有这个上载器类

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,并保存一个缩略图版本。

我想仅基于模型上的 bool 值就能制作小型/缩略图版本吗?

所以我做到了
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的处理速度结束。即使我这样
 def icon_only? picture
   false
 end

我的语法可能与:完全不对,但我也尝试询问
if icon_only?

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

最佳答案

使用:if条件,如下所示:

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

我实际上没有尝试过,但是已记录in the code,因此它应该可以工作。

关于ruby-on-rails-3 - Carrierwave的条件版本/过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11778464/

10-13 04:42