2009-10-05 31 views
4

我送朋友的邀請,我想用User.validates_format_of :email驗證的電子郵件地址,但User.email有一對夫婦,我又不是真正感興趣的其他驗證的。運行Rails中單驗證

所以有沒有辦法在模型上運行單個驗證,或者檢查特定的驗證是否已通過(未執行 user.errors.include?(validation_message) )?

回答

9

您可以查看寶石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 

然後你就可以在你的控制器做

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

非常感謝這個寶石鏈接。這個功能應該在Rails已經是IMO。 – 2013-07-22 20:53:06

2

您可以檢查是否已添加特定的錯誤:

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

在您的模型中創建一個像這樣的方法,並將其用於部分驗證

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