Carrierwave error: version doesn't exist! in Rails
Carrierwave error: version doesn't exist! in Rails
我在 Rails 5.2.3 中使用 Carrierwave (2.0.2, 0.11.2)。而且我非常坚持上传图像的版本。
Imagemagick 是最新版本,安装了 gems 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
我的模型是这样的:
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
上传的图像经过处理、缩放并以 :original size、:large 和 :thumb 版本保存在正确的文件夹中...都很好。
但是,如果我尝试创建另一个版本,或重命名现有版本,例如“ version :long ”,它不会创建它并且在我看来异常被捕获为:"Version long doesn't exist!"
我确实尝试了几个不同的版本名称,版本数量,名称为符号,引号,也阅读了Carrierwave/versions.rb的源代码,阅读了文档,但仍然找不到任何原因 behaviour.Only 这两个版本运行良好,没有任何一个 other.Could 有人帮我吗?
谢谢!
重命名版本或添加新版本后,您需要通过调用如下命令重新创建这些版本:
User.find_each do |user|
user.avatar.recreate_versions!
end
可以找到完整的文档here
我在 Rails 5.2.3 中使用 Carrierwave (2.0.2, 0.11.2)。而且我非常坚持上传图像的版本。 Imagemagick 是最新版本,安装了 gems 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
我的模型是这样的:
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
上传的图像经过处理、缩放并以 :original size、:large 和 :thumb 版本保存在正确的文件夹中...都很好。 但是,如果我尝试创建另一个版本,或重命名现有版本,例如“ version :long ”,它不会创建它并且在我看来异常被捕获为:"Version long doesn't exist!" 我确实尝试了几个不同的版本名称,版本数量,名称为符号,引号,也阅读了Carrierwave/versions.rb的源代码,阅读了文档,但仍然找不到任何原因 behaviour.Only 这两个版本运行良好,没有任何一个 other.Could 有人帮我吗? 谢谢!
重命名版本或添加新版本后,您需要通过调用如下命令重新创建这些版本:
User.find_each do |user|
user.avatar.recreate_versions!
end
可以找到完整的文档here