我正在向朋友发送邀请,我想使用User.validates_format_of :email
验证电子邮件地址,但User.email还有其他一些我并不感兴趣的验证。
那么有没有办法在模型上运行单个验证或检查是否已经过了特定的验证(没有这样做
user.errors.include?(validation_message)
)?
答案 0 :(得分:10)
您可以查看gem 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
答案 1 :(得分:3)
在模型中创建这样的方法并将其用于部分验证
def has_valid_name?
valid? || (errors[:first_name].empty? && errors[:last_name].empty?)
end
答案 2 :(得分:2)
您可以检查是否添加了特定错误:
user.errors.added? :name, :blank