首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以使用recreate_versions存在原始文件CarrierWave吗?

我可以使用recreate_versions存在原始文件CarrierWave吗?
EN

Stack Overflow用户
提问于 2015-08-06 06:38:06
回答 1查看 676关注 0票数 0

我正在为ImageUpload使用rails中的载波。

我想调整原始图像文件的大小,因为文件大小。

因此,我删除版本:拇指块位置,进程代码,而不是在版本块,如下所示。

代码语言:javascript
运行
复制
class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  ..
  #version :thumb do
  #  process :resize_to_limit => [1024, nil]
  #end

  process :resize_to_limit => [1024, nil] # added not in version block
  ..
end

问题是我不知道如何重新创建原始图像文件存在并使用CarrierWave上传。

.recreate_versions!方法只适用于版本块,我认为。

代码语言:javascript
运行
复制
#mounted uploader above
model.list_image.recreate_versions!
# => [:store_versions!]
# original file not change

如何重新创建已经存在的原始文件?

(我不想添加版本块,因为如果添加版本块,那么每当上传图像文件时,图像文件都是多个文件。(原始文件和特定版本文件)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-06 07:06:18

你可以用两种方法解决你的问题:

  1. 您可以在循环中为所有对象调用save,并在模型中使用imagemagick (RMagick)来调整实际图像的大小。 类模型< ActiveRecord::Base before_save do self.image = self.image.resize "1024x“末端
  2. 您将为所有与图像相关的数据创建新记录,并销毁以前的数据。而不是使用recreate_versions方法。 Model.all.each (foo_id: old.foo_id,image: old.image) new.save!old.destroy }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31848449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档