ruby-on-rails - 载波错误:版本不存在!在 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
上传的图像经过处理、缩放并保存为:原始大小、:大和:拇指版本在正确的文件夹中......一切都很好。但是,如果我尝试创建另一个版本,或重命名现有版本,例如“版本:long”,它不会创建它,并且在我看来异常被捕获为:“版本长不存在!” 我确实尝试了几个不同的版本名称,版本数量,名称作为符号,引号中,还阅读了 Carrierwave/versions.rb 的源代码,阅读了文档,但仍然找不到这种行为的任何原因。只有这两个版本工作得很好,不是任何其他的。有人可以帮我吗?谢谢!
解决方案
重命名版本或添加新版本后,您需要通过调用以下内容重新创建这些版本:
User.find_each do |user|
user.avatar.recreate_versions!
end
完整的文档可以在这里找到
推荐阅读
- symfony - Symfony 分页错误这里没有命名空间“KnpPaginator”的注册路径
- node.js - OracleDB NodeJS 模块连接池未与模块共享
- accessibility - 焦点可见对比
- java - 如何对列表进行排序
- > 每个列表的第一个元素?
- windows - 无法从主机显示容器的网站
- javascript - 如果条件正确,为什么序列不起作用?
- java - 如何在休眠中为多对多关系添加现有集合中的条目?
- react-native - 为底部导航反应原生曲线形状
- python - iPython 为意外的关键字参数“inputhook”提供错误
- heroku - 将单独的 repo 部署到 Heroku 子域