Ouverture de session

Commentaires récents

Syndication
Flux XML

Activer une validation si l'attribut n'est pas vide

Activer une validation si l'attribut n'est pas vide
Posté par bolo le Lundi, 23 Avril, 2007 - 4:00pm. Débuter avec Rails

Bonjour à tous;

j'utilise le plugin attachement_fu. j'aimerais lancé la validation si l'utilisateur uploade un fichier.
j'ai essayé ceci
validates_as_attachment unless :filename == ""
ou
validates_as_attachment unless self.filename.empty

ca ne marche pas

comment faire ?

Merci



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
ce n'est pas possible ?
Auteur: 
bolo
Date: 
Lun, 23/04/2007 - 21:21

ce n'est pas possible ?


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
classe et instance
Auteur: 
jasperiel
Date: 
Mer, 25/04/2007 - 01:25

Salut,

ce que tu essaies de faire traduit une mauvaise compréhension du code objet d'ActiveRecord. Ce n'est pas si dur une fois qu'on se pose les bonnes questions.

ActiveRecord fournit des méthodes "de classe" validates_* qui vont ajouter dynamiquement dans ton objet, lors de la validation, des validations par défaut.
C'est pourquoi tu appelles ces méthodes directement dans la classe, comme si tu écrivais une ligne dans le fichier.

A ce niveau-là, il n'y a pas d'objet existant. Donc
validates_as_attachment unless :filename == ""
ne peut pas marcher.

Par contre, pour du code plus avancé, tu vas coder la fonction "validate" qui devrait marcher comme tu t'y attends. Puisque c'est une méthode 'normale' elle sera appelée sur des objets existants, donc les attributs sont connus et contiennent des valeurs.

Du coup tu pourras faire un truc du genre
def validate
errors.add_to_base #blabla# unless #condition#
# et plein d'autres joyeusetés encore
end

A mon avis, c'est le plus quick-n-dirty-fix pour toi.

Si ton cas est vraiment trop 'simple' (comprendre : c'est pas toi qui veux un truc hard, tout le monde a du se poser la meme question un jour) je pense qu'il doit exister d'autres moyens directement dans ton plugin. Epluche la doc, on sait jamais.

Si tu veux garder un autre genre de flexibilité et de lisibilité du code, tu peux toujours t'inspirer du code d'ActiveRecord et coder ta méthode de classe validates_machin_unless_empty. Ca pourrait être intéressant et t'apprendre des tas de choses en plus.

Je ne la connais pas mais il me semble que l'option :allow_nil dans les validators pourrait t'être utile si tu décidais de faire ça.

http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.htm
et clique sur plein de [show code] :)


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Qui est en ligne
Il y a actuellement 1 utilisateur et 35 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Propulsé par Drupal ]