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
ce n'est pas possible ?
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] :)
railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails [ Propulsé par Drupal ]
il y a 17 heures 20 min
il y a 1 semaine 16 heures
il y a 1 semaine 1 jour
il y a 1 semaine 1 jour
il y a 1 semaine 1 jour
il y a 1 semaine 6 jours
il y a 2 semaines 12 heures
il y a 2 semaines 3 jours
il y a 3 semaines 4 heures
il y a 3 semaines 1 jour