繁体   English   中英

载波错误:版本不存在! 在 Rails 中

[英]Carrierwave error: version doesn't exist! in Rails

我在 Rails 5.2.3 中使用 Carrierwave (2.0.2, 0.11.2)。 而且我很喜欢上传图片的版本。 Imagemagick 是最新版本,安装了宝石 Carrierwave、Rmagick 和 Minimagick。 一切正常,默认创建两个版本,在 uploaders/image_uploader.rb 文件中未注释:就像这样:

version :large do
  process resize_to_fill: [500,500]
end

version :thumb from :large do
  process resize_to_fit: [50, 50]
end

version :long do
  process resize_to_fill: [500,200]
end

我的 model 看起来像这样:

class Slide < ApplicationRecord
  mount_uploader :image, ImageUploader

  before_save :update_image_attributes
  after_save :recreate_delayed_versions!

  validates :image_title, presence: true
  validates :display, presence: true
  validates :order, presence: true
  validates_presence_of :image
  validates_integrity_of :image
  validates_processing_of :image

  def recreate_delayed_versions!
     image.recreate_versions!(:thumb,:large,:long)
  end

  private

  def update_image_attributes
    if image.present? && image_changed?
      self.image_content_type = image.file.content_type
      self.image_file_size = image.file.size
    end
  end
end

上传的图像经过处理、缩放并保存在:原始大小、:大和:正确文件夹中的拇指版本……一切都很好。 但是,如果我尝试创建另一个版本,或重命名现有版本,例如“version:long”,它不会创建它,并且在我看来异常被捕获为:“版本 long 不存在”,我确实尝试了几个不同的版本名称,版本数量,名称作为符号,用引号引起来。还阅读 Carrierwave/versions 的源代码,rb,阅读文档。但仍然无法找到这种行为的任何原因,只有这两个版本运行良好。不是还有其他的吗?有人可以帮我吗? 谢谢!

重命名版本或添加新版本后,您需要通过调用以下内容重新创建这些版本:

User.find_each do |user|
  user.avatar.recreate_versions!
end

完整的文档可以在这里找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM