Carrierwave;несколько загрузчиков или только один? - PullRequest
30 голосов
/ 25 января 2011

У меня есть сообщение модель и подкаст модель. Обе модели имеют атрибут с названием: image . Я использую один Carrierwave загрузчик (названный ImageUploader) для обработки обеих моделей. У меня есть два вопроса, прежде чем я начну производство.

Тупой вопрос :

Можно ли использовать один и тот же загрузчик для двух разных моделей, если у них обоих одинаковые имена атрибутов для файловых вложений? извините, если это кажется очевидным

Основной вопрос :

Я хочу создать три версии каждого изображения в блоге (большой, большой, сепия) и только 1 версию каждого изображения подкаста (большой палец).

Нужно ли сейчас использовать два загрузчика или я могу использовать пространство имен с тем, которое я уже использую?

Снова это, вероятно, кажется очевидным. Возможно, я мог бы написать второй загрузчик за то время, которое потребовалось мне, чтобы задать эти вопросы

1 Ответ

44 голосов
/ 07 марта 2011

Вы можете использовать один и тот же загрузчик на разных моделях, даже если у них разные имена атрибутов. например,

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)
...