2009-12-24 49 views
2

J'utilise paperclip pour attacher un avatar aux utilisateurs, ce qui fonctionne bien mais lorsqu'un nouvel utilisateur tente de s'enregistrer il se plaint de l'avatar bieng trop petit et pas du bon type.Rendre un champ facultatif dans les rails

Voilà comment je valider mes avatars:

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

C'est l'erreur que je reçois lorsque je tente de vous inscrire.

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 

est-il de toute façon faire en sorte que l'avatar peut être vide?

Répondre

2

Je ne sais pas si ça va marcher, mais essayer:

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

je ": à moins =>: new_user?" et a écrit une fonction qui renvoie true/false qui semble l'avoir corrigé – Arcath

+0

: if => avatar_file_name_changed? travaillé pour moi –

1

Je n'ai pas utilisé paperclip, mais en général dans Rails vous pouvez ajouter la condition de décider si les validations doivent être exécutés.

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

Vous devez ajouter une condition similaire à toutes les validations qui affectent l'avatar. Si vous voulez en savoir plus, jetez un oeil here.

0

Il est plus comme:

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

Questions connexes