2015-04-06 2 views
2

Две модели имеют один и тот же класс загрузчика Carrierwave.Несколько изображений по умолчанию для несущей волны

Carrierwave как метод default_url. Как я могу заставить его возвращать разные результаты на основе класса, который его назвал? например:

class PhotoUploader < CarrierWave::Uploader::Base 


def default_url 
    return "https://www.example.com" + ActionController::Base.helpers.asset_url("main/profile/user_2.png") if CONDITION   
    "https://www.example.com" + ActionController::Base.helpers.asset_url("main/profile/user.png") 
end 
+1

Почему бы не использовать 2 различных загрузки фотографий? Думаю, вы использовали только одного загрузчика, потому что обе модели поделились сходствами. В вашем случае теперь они не имеют сходства, они «расходятся», поэтому зачем пытаться выполнить один и тот же код для двух разных моделей, требующих конкретного лечения? – MrYoshiji

ответ

3

Вы можете назвать модель и все методы, которые вам нужно, например: model.class.name

def default_url 
    return "https://www.example.com" + ActionController::Base.helpers.asset_url("main/profile/user_2.png") if model.class.name == "User"   
    "https://www.example.com" + ActionController::Base.helpers.asset_url("main/profile/user.png") 
end