我有这个上传者课程
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并保存缩略图版本。
我希望能够根据模型上的布尔值制作小/拇指版本吗?
所以我做了这个
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?
哪位告诉我没有这样的方法名称。我迷失了......
答案 0 :(得分:3)
使用:if
条件,如下所示:
process :resize_to_limit => [50, 50], :if => :icon_only?
process :resize_to_limit => [300, 300], :if => ...
我实际上没有尝试过这个,但它已经记录in the code,所以它应该有效。
答案 1 :(得分:2)
正如@shioyama指出的那样,可以使用:if指定条件。
然而,执行逆条件(例如!icon_only?
)需要一些工作。
process :resize_to_limit => [300, 300], :if => Proc.new {|version, options| !version.send(:icon_only?, options[:file])} do