2010-11-25 6 views
0

Nouveau sur Rails et ActiveRecord, je ne sais pas comment appliquer la validation à plusieurs niveaux de modèle relationnel. J'ai cherché tous les tutoriels que je peux trouver sont tous de validation dans un seul modèle.Comment valider Rails 3 Modèle relationnel?

Comment puis-je valider plusieurs modèles relationnels?

Dire que j'ai plusieurs modèles, un modèle appelé field stocke différents types d'attributs dans le jeu de sport. (Ex. Score final, buts pour, buts contre etc) et un autre modèle value qui stocke toutes les valeurs réelles les scores de jeu comme dans le field

donc je vais avoir 2 classes

class Field < ActiveRecord::Base 
    has_many :value  
end 
class Value < ActiveRecord::Base 
belongs_to :field 
end 

Comment puis-je Validat e la valeur de chaque attribut du modèle value correspondant à field?

Répondre

2

Rails 3: Vous pouvez créer un fichier dans votre répertoire lib (assurer que que ce fichier est chargé par l'application) et de mettre dans une classe avec une méthode validate:

class HumanValidator < ActiveModel::Validator 

    def validate(record) 
    record.errors[:base] << "This person is dead" unless check(human) 
    end 

    private 

    def check(record) 
     (record.age < 200) && (record.age > 0) 
    end 

end 

Dans tous le modèle que vous souhaitez valider, vous invoquez la validation avec le de la classe comme ceci:

# app/models/person.rb 
class Customer < ActiveRecord::Base 
    validates_with HumanValidator 
end 

Allez lire ceci, la nouveauté validate dans des rails 3, soure link text

+0

Pour charger automatiquement tous les fichiers dans le répertoire lib, ajoutez config.autoload_paths + =% W (# {Rails.root}/lib) dans votre fichier config/application.rb. – plehoux

Questions connexes