Carrierwave重新创建版本

时间:2014-01-20 12:14:44

标签: ruby-on-rails ruby-on-rails-4 carrierwave rmagick

我正在使用carrierwave和rmagick来处理我的图片上传。我现在在image_uploader.eb中添加了一个新版本(smallthumb):

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads/images"
  end

  version :thumb do
    process :resize_to_fill => [250, 250]
  end

  version :smallthumb do
    process :resize_to_fill => [70, 70]
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

我有一个名为“image”的模型,其中安装了图像上传器:

class Image < ActiveRecord::Base
  attr_accessible :date, :description, :name, :size, :image, :article_ids
  has_and_belongs_to_many :articles
  mount_uploader :image, ImageUploader
end

我已经读过我需要调用recreate_versions !,但我不明白我需要在哪里调用此操作以及如何调用。我在公共/上传/图像的实时服务器上有我的图像。如何重新创建所有这些图像的版本(在我的开发机器和实时服务器上),以便我也有图像的小版本?

3 个答案:

答案 0 :(得分:5)

Image.all.each { |i| i.image.recreate_versions! }

答案 1 :(得分:2)

假设user model有一个image uploader

然后尝试这个

user.all.each {|x|x.image.recreate_versions!}

OR

User.all.each do |user| user.avatar.recreate_versions! end

答案 2 :(得分:0)

来自https://github.com/carrierwaveuploader/carrierwave#recreating-versions

Image.find_each do |image|
  image.image.recreate_versions! if image.image?
end