我送朋友的邀請,我想用User.validates_format_of :email
驗證的電子郵件地址,但User.email有一對夫婦,我又不是真正感興趣的其他驗證的。運行Rails中單驗證
所以有沒有辦法在模型上運行單個驗證,或者檢查特定的驗證是否已通過(未執行 user.errors.include?(validation_message)
)?
我送朋友的邀請,我想用User.validates_format_of :email
驗證的電子郵件地址,但User.email有一對夫婦,我又不是真正感興趣的其他驗證的。運行Rails中單驗證
所以有沒有辦法在模型上運行單個驗證,或者檢查特定的驗證是否已通過(未執行 user.errors.include?(validation_message)
)?
您可以查看寶石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
您可以檢查是否已添加特定的錯誤:
user.errors.added? :name, :blank
在您的模型中創建一個像這樣的方法,並將其用於部分驗證
def has_valid_name?
valid? || (errors[:first_name].empty? && errors[:last_name].empty?)
end
非常感謝這個寶石鏈接。這個功能應該在Rails已經是IMO。 – 2013-07-22 20:53:06