2009-09-14 11 views
0

Salut, je suis un débutant complet obtenir mes pieds avec Rails, S'il vous plaît quelqu'un peut me aider à comprendre le flux du codeflux de code compréhension

Comment CreditCardCallbacks, def before_validation (modèle) est invoqué lorsque nous ne sommes pas l'appeler directement.

class CreditCardCallbacks 
# Normalize the credit card number 
def before_validation(model) 
model.cc_number.gsub!(/[-\s]/, '') 
end 
end 

class Order < ActiveRecord::Base 
before_validation CreditCardCallbacks.new 
# ... 
end 

class Subscription < ActiveRecord::Base 
before_validation CreditCardCallbacks.new 
# ... 
end 

Merci à l'avance

Répondre

0

C'est là la nature dsl des rails entre en jeu. Rails connaît par le nom de la méthode qu'il doit être invoqué avant que le code de validation fonctionne. En particulier avant que Validations.validate est appelé

+0

Salut Merci pour votre réponse. Mais pouvez-vous s'il vous plaît expliquer plus en détail –

0

Le modèle est-il valide? fonction appellera avant_validation avant d'exécuter la validation réelle.

2

ActiveRecord expose un certain nombre de rappels «lifecycle» qui vous permettent de vous connecter à différentes parties du processus de validation et de persistance. Voir le Rails Guide to ActiveRecord Validations and Callbacks pour plus d'informations.

(Si le code source qui implémente les rappels vous intéresse, vous pouvez jeter un coup d'œil à celui-ci: here, mais cela peut être un peu déroutant si vous n'avez jamais fait de métaprogrammation dans Ruby).

0

Pro Active Record: bases de données avec Ruby et Rails

par Kevin Marshall, Tchad Pytel, Jon Yurek - 2007 - 304 pages

obtenir ce livre et le lire. Bien et clairement explique tout ce que vous voulez savoir. Un peu vieux mais s'applique toujours.

Questions connexes