validates_uniqueness_of

时间:2015-07-25 01:45:58

标签: ruby-on-rails validation activerecord conditional

我有以下验证:

class User < ActiveRecord::Base
...
  validates :email, uniqueness: { message: "Email already associated with an account" }
...
end

我的类User作为一个名为active的布尔属性,我想使用条件将其合并到验证逻辑中。如果条件user.active? == false,抛出自定义验证错误消息的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我会尝试添加以下两个验证:

Z

答案 1 :(得分:1)

验证可以表示为实例方法。例如,我有一个Student模型,其中包含first_namelast_name属性。我想引入一个验证,当其中一个或两个名称都为空时,它将抛出自定义错误。我可以通过以下方式做到这一点:

validate中调用自定义方法:

class Student < ActiveRecord::Base
...
  validate :full_name_validation, on: :create
...
end

并添加我的full_name_validation方法:

  def full_name_validation
    if first_name.blank? && last_name.blank?
      errors.add(:full_name, 'Full name is required')
    elsif first_name.blank?
      errors.add(:full_name, 'First name is required')
    else
      errors.add(:full_name, 'Last name is required')
    end
  end