Подтвердить что ты не робот

Carrierwave; несколько загрузчиков или только один?

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

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

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

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

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

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

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

4b9b3361

Ответ 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)