30

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

愚蠢的问题

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

主要问题

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

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

同样,这似乎很明显。在我问这些问题的时候,我可能已经写了第二个上传者

4

1 回答 1

44

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

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)
于 2011-03-07T09:22:46.407 回答