2009-12-24 3 views
2

Я использую paperclip для прикрепления аватара к пользователям, который отлично работает, но когда новый пользователь пытается зарегистрировать его, он жалуется на аватар слишком маленький, а не на правильный тип.Сделать поле необязательным в рельсах

Это, как я проверить свои аватары:

validates_attachment_size :avatar, :less_than => 1.megabytes 
validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/png', 'image/gif'] 

Это ошибка, я получаю, когда я пытаюсь зарегистрировать.

There were problems with the following fields: 

* Avatar file size file size must be between 0 and 1048576 bytes. 
* Avatar content type is not included in the list 

Есть ли способ сделать так, чтобы аватар мог быть пустым?

ответ

2

Я не знаю, если это сработает, но попробовать:

validates_attachment_size :avatar, :less_than => 1.megabytes, :if => avatar_changed? 
validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/png', 'image/gif'], :if => avatar_changed? 
+0

Я ": если =>: new_user?" и написал функцию, которая возвращает true/false, которая, похоже, исправила ее – Arcath

+0

: if => avatar_file_name_changed? работал на меня –

1

Я не использовал скрепку, но в целом в Rails вы можете добавить условие, чтобы решить, если валидация должна быть запущена.

validates_attachment_size :avatar, 
    :less_than => 1.megabytes, 
    :unless => "avatar.blank?" 

Вы должны добавить подобное условие ко всем проверкам, которые затрагивают аватар. Если вы хотите узнать больше, посмотрите here.

0

Это больше похоже на:

validates_attachment_size :avatar, :less_than => 1.megabytes, :unless => "avatar_content_type.blank?"

Смежные вопросы