Ruby/Rails - Shrine::Error (storage :store没有在ImageUploader上注册)
这个错误是由于在ImageUploader中没有注册名为:store的存储器(storage)引起的。Shrine是一个用于处理文件上传的Ruby库,它允许开发人员使用不同的存储后端来存储上传的文件。
要解决这个错误,需要在ImageUploader中注册名为:store的存储器。存储器定义了文件上传后的存储方式和位置。
以下是一个完善且全面的答案:
Ruby/Rails - Shrine::Error (storage :store没有在ImageUploader上注册)
这个错误是由于在ImageUploader中没有注册名为:store的存储器(storage)引起的。Shrine是一个用于处理文件上传的Ruby库,它允许开发人员使用不同的存储后端来存储上传的文件。
在Shrine中,存储器(storage)是用于定义文件上传后的存储方式和位置的组件。通过注册存储器,我们可以指定文件上传后应该存储在哪里,以及如何访问这些文件。
要解决这个错误,我们需要在ImageUploader中注册名为:store的存储器。下面是一个示例:
require "shrine"
require "shrine/storage/file_system"
Shrine.storages[:store] = Shrine::Storage::FileSystem.new("public", prefix: "uploads")
class ImageUploader < Shrine
plugin :store
# 注册名为:store的存储器
Attacher.validate do
validate_mime_type_inclusion %w[image/jpeg image/png image/gif]
validate_max_size 5 * 1024 * 1024
end
end
在上面的示例中,我们首先引入了Shrine和Shrine的文件系统存储后端。然后,我们通过Shrine.storages[:store]
注册了名为:store的存储器,指定了文件存储的位置为"public/uploads"目录。
接下来,在ImageUploader中,我们使用plugin :store
启用了存储插件,并在Attacher.validate
块中注册了一些验证规则。这些验证规则用于验证上传的文件类型和大小。
通过以上的配置,我们成功注册了名为:store的存储器,解决了Shrine::Error (storage :store没有在ImageUploader上注册)错误。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行。
领取专属 10元无门槛券
手把手带您无忧上云