我有帖子模型和播客模型。两个模型都有一个标题为: image 的属性。我正在使用一个Carrierwave上传器(名为ImageUploader)来处理这两个模型。在我投入生产之前,我有两个问题。
愚蠢的问题:
当它们的文件附件具有相同的属性名称时,是否可以为两个不同的模型使用相同的上传器? 抱歉,如果看起来很明显
主要问题:
我想为每个博客帖子图片(拇指,大号,棕褐色)创建三个版本,并且每个播客图片(拇指)只有一个版本。
我现在需要使用两个上传器,还是可以使用我已经使用的那个来命名?
这似乎很明显。 我可能已经写了第二个上传者,它带我去问这些问题
答案 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)