与用户关联的Cloudinary图像

时间:2012-06-07 18:23:40

标签: ruby-on-rails-3 carrierwave cloudinary

我正在尝试查找有关如何将通过cloudinary上传的图像与特定用户相关联的文档,这些用户将允许上传它们的用户删除等,但不允许其他用户删除。但是,图像应始终可供公开查看。我对rails很新,但基本上我试图用cloudinary复制:

class Image

  belongs_to :user

end

class User

  has_many :images

end

显然,如果这是一种表示关系的合适方式,那么代码并不完整只是试图显示我想要实现的关联。如果有人有更好的解决方案的建议,或者可以指向我处理这样的问题的一些文档的方向,将非常感谢!

1 个答案:

答案 0 :(得分:4)

假设您使用CarrierWave和Cloudinary来管理Rails模型的上传。您需要定义一个上传器类并将其挂载到Image类。假设您的Image模型类具有“图片”属性:

class PictureUploader < CarrierWave::Uploader::Base

  include Cloudinary::CarrierWave

  version :thumbnail do
    process :resize_to_fit => [50, 50]
  end

end


class Image

  belongs_to :user

  mount_uploader :picture, PictureUploader

end

每个用户都有多个图像记录,每个记录都包含对正在上传的实际图像的引用。用于嵌入这样的图像:

<%= image_tag(user.images[0].picture_url) %>

或缩略图:

<%= image_tag(user.images[0].picture_url(:thumbnail)) %>

有关详细信息,请参阅Cloudinary documentation

关于图像删除:您的Web应用程序可能允许用户管理图像。只需删除图像记录就会自动删除上传到Cloudinary的远程图像。例如:

user.images.last.destroy