2009-08-12 3 views
0

J'essaie de savoir si je peux appeler la méthode de validation deux fois dans une définition de modèle ActiveRecord. Une fois, bien sûr, serait dans un mixin.Si vous pouvez appeler valider deux fois (Comment lire l'API dans les rails)

La première question est, est-il correct de mettre cette méthode dans un mixin:

validate :check_them_dates 

et ne vous inquiétez pas si les classes qui me comprennent voudront appeler ainsi valider?

Je l'ai déjà regardé l'API Rails et la méthode ressemble à ceci (en vaidations.rb):

def validate #:doc: 
    end 

qui est-à-dire où que je chercher cela?

Répondre

2

Vous pouvez appeler validate dans le modèle autant de fois que vous le souhaitez, vous n'avez donc pas à vous soucier de l'ajouter à un mixin.

class Item < ActiveRecord::Base 
    validate :check_them_dates 
    validate :name_is_proper 
end 

Si vous faites un mixage, il est parfois plus simple d'utiliser un bloc dans la méthode de validation. De cette façon, vous n'avez pas à vous soucier d'ajouter une autre méthode.

module ValidateThemDates 
    def self.included(base) 
    base.validate do |model| 
     model.errors.add # ... 
    end 
    end 
end 

class Item < ActiveRecord::Base 
    include ValidateThemDates 
end 

Bonne chance!

+0

Intéressant. Je devais regarder votre code pendant une minute pour comprendre ce qui se passait, mais oui, c'est parfait. Je trouve le nom de la méthode: nom_méthode pour être plus facile à comprendre, mais je suppose que je dois utiliser plus de blocs. –

+0

Oh, et merci et +1 et meilleure réponse et tout ça! –

Questions connexes