在Rails中为一些模型使用一个图像上传器(carrierwave)?

时间:2013-04-22 12:39:51

标签: ruby-on-rails carrierwave

这里我有两个模型:用户和书 用户有上传的头像,而Book有上传的封面 我已经阅读了有关上传图片的railscast,但我不知道应该如何处理不同类型的图片? (在这种情况下,用户的头像和书的封面)

我已经查看了论坛的一些开源代码。它使用AvatarUploader和PhotoUploader,用于在帖子中上传照片。

那么,我是否应该为照片和头像使用一个上传器(以及如何?)或者我只是为每个上传器创建2个上传器?  谢谢 !

1 个答案:

答案 0 :(得分:7)

使用两个单独的上传器是完全没问题的,即使它们几乎相同。无论如何,它们都延伸CarrierWave::Uploader::Base,它只是让你的对象保持良好和整齐的命名。

如果您想要在两者中使用某些共享功能并且不想重复,则可以始终编写自己的扩展CarrierWave::Uploader::Base的类,并继承自上传者的类!

class MyImageUploaderBase < CarrierWave::Uploader::Base
  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

class AvatarUploader < MyImageUploaderBase 
  ...
end