2010-12-31 4 views
0

Je me demandais simplement si quelqu'un connaissait un moyen d'exécuter la logique after_validation selon que le lien: attr est valide ou non?Traitement after_validation dans les rails 3 modèle

validates :link, :uri_check => { :schemes => [:ftp, :http, :https] } 

after_validation :initialize_dependents, :on => :create 

def initialize_dependents 
    #post validation logic here 
end 

Ainsi, au lieu de: sur =>: créer, peut-être ...

after_validation :initialize_dependents, :if => link.valid? 

Le problème est que je ne peux accéder à la chaîne et non l'objet.

Toute aide serait appréciée.

Merci

Répondre

0

Essayez le :if comme ceci:

:if => Proc.new { --code here-- } 

ou

:if => :my_method? 

def my_method? 
    --code here-- 
end 
+0

Salut Zabba, merci pour votre réponse. Existe-t-il un moyen d'accéder aux résultats de la logique de validation? Dans mon contrôleur, je peux utiliser @ link.vaild? Comment appliquer ceci sans valider le lien (String) dans mon modèle? – seogrady

0

Got it! Juste nécessaire pour créer un observateur.

class LinkObserver < ActiveRecord::Observer 

    after_validation(model) 
    #logic here 
    end 

end 
Questions connexes