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)