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

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

愚蠢的问题

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

主要问题

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

我现在需要使用两个上传器吗?或者我可以使用我已经使用的那个命名空间?

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

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

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)