public_id在cloudinary和carrierwave之间不匹配
我正在使用CarrierWave和Cloudinary将多张图片上传到我的博客post。 我从浏览器上传它们。 使用post
表单中的文件字段会发生这种情况。
提交表单时,会为每个图像创建一个picture
实例,并将图像上传到Cloudinary。
def create @post = Post.new(post_params) if @post.save if params[:images] params[:images].each do |image| @post.pictures.create(image: image) Cloudinary::Uploader.upload(image) end end end end
我使用的ImageUploader几乎是默认的(包含cloudinary插件的exept)
class ImageUploader < CarrierWave::Uploader::Base include Cloudinary::CarrierWave storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end
现在,图像正在保存到我的服务器,图像正在上传到cloudinary。 但不知何故, public_id's
永远不会匹配。 有谁知道为什么不呢? 当我调用Cloudinary::Uploader.upload(image)
时是否创建了新的public_id
?
在检查了Tal Lev-Ami的项目后(非常感谢!)我想到了,我发现我的ImageUploader的问题就在于线路
storage :file
在评论出这一行后,一切都运行良好(我不必手动上传我的图像)。 如果有人理解为什么这条线导致了问题,请作为我的客人在此发布以供将来参考。
无需手动将图像上传到Cloudinary。 使用CarrierWave上传器时,图像将自动上传到Cloudinary,并在模型中更新public_id。