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

时间:2011-01-25 17:20:24

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

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

愚蠢的问题

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

主要问题

我想为每个博客帖子图片(拇指,大号,棕褐色)创建三个版本,并且每个播客图片(拇指)只有一个版本。

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

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

1 个答案:

答案 0 :(得分:44)

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

class Post
  mount_uploader :image, ImageUploader
end

class Podcast
  mount_uploader :photo, ImageUploader
end

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

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