2016-08-11 3 views
0

Я использую CarrierWave + rmagick gems для загрузки изображения на сервер. Когда я загружаю обычный файл, все идет хорошо. Но когда я загружаю неверный файл, ошибка формы не отображает ошибку CarrierWave, она отображает ошибку, которая появляется при запуске rmagick.Изменение сообщения об ошибке CarrierWave при обнаружении ошибки от rmagick

Простой пример. У меня есть User модели, и загрузчик внутри него так:

class User < ActiveRecord::Base 
    ... 
    mount_uploader :avatar, PictureUploader 
end 

(avatar является строкой field)

Теперь загрузчик определяется здесь:

class BaseImageUploader < CarrierWave::Uploader::Base 
    include CarrierWave::RMagick 
    storage :fog 

    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 
end 


class PictureUploader < BaseImageUploader 
    def default_url 
    'placeholder.png' 
    end 

    def store_dir 
    'images/pictures' 
    end 

    version :thumb do 
    process resize_to_fit: [50, 50] 
    end 

    version :medium do 
    process resize_to_fill: [400, 400] 
    end 

    version :small_square do 
    process resize_to_fill: [200, 200] 
    end 
end 

Затем я создаю пустым файлом, например, с touch ~/Desktop/file.jpg и попыткой загрузить его через форму, и здесь я получаю ошибку проверки:

Avatar Failed to manipulate with rmagick, maybe it is not an image? Original Error: Empty input file `<foldername>/public/uploads/tmp/1470905765-10111-5893/thumb_file.jpg' @ error/jpeg.c/JPEGErrorHandler/322 

Я попытался с помощью ming_magick вместо RMagick, но результат тот же (с немного другим сообщением об ошибке)

Могу ли я сделать что-то, чтобы изменить это сообщение проверки, чтобы сказать что-то вроде Avatar Your image is invalid вместо значения по умолчанию?

ответ

0

Хм, на самом деле это было довольно легко: я просто нужно добавить строку в i18n, как это:

errors.messaging.rmagick_processing_error: "Error processing image"