Carrierwave; 多个上传者还是只有一个?

ste*_*och 30 ruby-on-rails ruby-on-rails-3 carrierwave

我有一个帖子模型和一个播客模型.两个模型都有一个标题为:image的属性.我正在使用一个Carrierwave上传器(名为ImageUploader)来处理这两个模型.在我投入生产之前,我有两个问题.

愚蠢的问题:

当它们的文件附件具有相同的属性名称时,可以对两个不同的模型使用相同的上传器吗? 抱歉,如果这看起来很明显

主要问题:

我想创建每个博客文章图像的三个版本(拇指,大,棕褐色),每个播客图像(拇指)只有1个版本.

我现在需要使用两个上传器,还是可以使用我已经使用的那个命名空间?

它似乎很明显.我可能已经写了第二个上传者,它带我去问这些问题

小智 44

您可以在不同的模型上使用相同的上传器,即使它们具有不同的属性名称.例如

class Post
  mount_uploader :image, ImageUploader
end

class Podcast
  mount_uploader :photo, ImageUploader
end
Run Code Online (Sandbox Code Playgroud)

你是否愿意是另一回事.在您的情况下,我会为每个模型创建不同的上传器,因为它们有不同的要求.如果要保持代码干燥,可以始终使用子类:

class ImageUploader < Carrierwave::Uploader::Base; end  # thumbnail
class PostImageUploader < ImageUploader; end  # thumbnail (from superclass), large & sepia
class PodcastImageUploader < ImageUploader; end # thumbnail (from superclass)
Run Code Online (Sandbox Code Playgroud)