在Rails中运行单个验证

时间:2009-10-05 09:55:34

标签: ruby-on-rails validation model

我正在向朋友发送邀请,我想使用User.validates_format_of :email验证电子邮件地址,但User.email还有其他一些我并不感兴趣的验证。

那么有没有办法在模型上运行单个验证或检查是否已经过了特定的验证(没有这样做 user.errors.include?(validation_message) )?

3 个答案:

答案 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