2009-10-05 6 views
4

J'envoie des invitations amis et je veux valider l'adresse e-mail en utilisant User.validates_format_of :email, sauf que User.email a deux autres que je suis validations pas vraiment intéressé.Exécution d'une seule validation dans Rails

donc existe-t-il un moyen d'exécuter une seule validation sur un modèle ou de vérifier si cette validation spécifique est passée (sans faire user.errors.include?(validation_message) )?

Répondre

9

Vous pouvez vérifier la gemme grouped_validations

class Person < ActiveRecord::Base 
    validation_group :name do 
    validates_presence_of :first_name 
    validates_presence_of :last_name 
    end 
    validates_presence_of :sex 
end 

Ensuite, vous pouvez le faire dans votre contrôleur

p = Person.new 
p.group_valid?(:name) # => false 
p.first_name = 'John' 
p.last_name = 'Smith' 
p.group_valid?(:name) # => true 
+0

Très bien, merci pour ce lien de gemme. Cette fonctionnalité devrait être dans Rails déjà IMO. –

2

Vous pouvez vérifier si une erreur spécifique a été ajouté:

user.errors.added? :name, :blank 
3

Créez une méthode comme celle-ci dans votre modèle et utilisez-la pour la validation partielle

def has_valid_name? 
    valid? || (errors[:first_name].empty? && errors[:last_name].empty?) 
end 
Questions connexes