Настройка настраиваемого сообщения об ошибке с помощью CarrierWave

У меня есть приложение для загрузки изображений, работающее на носителе, которое ограничивает загрузку изображения только с помощью желаемых расширений "jpg, jpeg, png". Я применил проверку для несущей в моем загрузчике как

def extension_white_list
  %w(jpg jpeg png)
end

Теперь любой, кто пытается загрузить изображение с расширением, отличным от желаемого расширения (упоминание выше), приведет к ошибкам проверки

Я хочу настроить сообщение об ошибке проверки

В настоящий момент сообщение об ошибке представлено как

You are not allowed to upload "" files, allowed types: ["jpg","jpeg","png"]

Может кто-нибудь помочь, я нашел ссылку , где ребята упоминают, как достичь этого.

но это проблема

1. I18n support I dont require to translate the error message using I18n 

2. The 'Key' to be used I not sure which key to used in YAML for
    not matching extension whitelist error message (e.g) carrierwave_processing_error key if error is for processing failure

Пожалуйста, предоставьте мне ответ в терминах CarrierWave и, пожалуйста, не просите меня написать отдельный набор для проверки соответствия для соответствия

Ответ 1

определите пару значений ключа в en.yml

en:
  errors:
    messages:
       extension_white_list_error: 'My Custom Message'

Если изменилось с последними версиями. Поэтому попробуйте, как показано ниже, если выше ответ не работает:

en:
  errors:
    messages:
       extension_whitelist_error: 'My Custom Message'

и пусть CarrierWave сделает остальные

Ответ 3

Если кто-то заканчивается здесь в 2016 году + и задается вопросом, почему правильные ответы, найденные на этой странице или где-либо еще в Интернете, не работают, из-за этого это может быть связано. По крайней мере, это было в моем случае:

Переименовать extension_white_list ~ > extension_whitelist

Легкая вещь, которую можно пропустить при копировании решений.

https://github.com/carrierwaveuploader/carrierwave/commit/06003a5044190f93d07d958b6ca9fd6f6f8fbdb2

Ответ 4

по какой-то причине мой ActiveModel не включил модуль валидации из несущей волны при вызове mount_uploader. Мне пришлось сделать include CarrierWave::Validations::ActiveModel в моей модели, чтобы получить проверку целостности.