Ruby on Rails 3 и драгоценный камень Paperclip: пользовательская проверка присутствия для вложения (без использования 'validates_attachment_presence') - PullRequest
0 голосов
/ 19 января 2011

Я использую гем 'paperclip' для Ruby on Rails 3, и я хотел бы обработать пользовательскую проверку присутствия при таком подходе: "если значение пути к файлу (строка типа" /Users/Desktop/image.gif)"or" C:/Users/Desktop/image.gif ") не введено в поле" file_field ", выдает ошибку для этого поля".

Я думаю, что у меня проблема с этим, потому что RoR обрабатывает 'file_field' по-другому, чем другие поля.

Замечание : я не хочу использовать 'validates_attachment_presence'метод присутствует в «скрепке».

Это хороший подход, чтобы делать то, что я хотел бы?Если да, как это сделать?


Я попробовал в своем контроллере код:

if params[:user][:avatar].blank?  
  # I also used 
  # - 'nil?' instead of 'blank'
  # - !params[:user][:avatar]
  @user.errors.add( :avatar, "can not be blank" )
end

но, если я попытаюсь отправить форму спустой файл (значение пути nil / blank), я получаю

NoMethodError
У вас есть объект nil, когда вы этого не ожидали!
Возможно, вы ожидали экземплярActiveRecord :: Base.
Ошибка при оценке nil. []

1 Ответ

1 голос
/ 20 января 2011

Просто идея: вы также можете использовать Javascript, чтобы не активировать кнопку загрузки, пока что-то не будет напечатано в текстовом поле.Это избавляет от необходимости ненужной поездки туда и обратно на сервер.Возможно, вы захотите проверить, что если ваша модель User.rb использует attr_accessible, поле присутствует в этой строке.

...