validates_uniqueness_of 的条件验证消息
Conditional validation message for validates_uniqueness_of
我有以下验证:
class User < ActiveRecord::Base
...
validates :email, uniqueness: { message: "Email already associated with an account" }
...
end
我的 class User
作为一个名为 active
的布尔属性,我想使用条件将其合并到验证逻辑中。如果条件 user.active? == false
,抛出自定义验证错误消息的最佳方法是什么?
我会尝试添加以下两个验证:
validates :email, uniqueness: { message: "message 1", if: 'active?' }
validates :email, uniqueness: { message: "message 2", if: '!active?' }
验证可以表示为实例方法。例如,我有一个具有 first_name
和 last_name
属性的 Student
模型。我想引入一个验证,当其中一个或两个名称为空时,它将抛出自定义错误。我可以通过以下方式做到这一点:
调用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
我有以下验证:
class User < ActiveRecord::Base
...
validates :email, uniqueness: { message: "Email already associated with an account" }
...
end
我的 class User
作为一个名为 active
的布尔属性,我想使用条件将其合并到验证逻辑中。如果条件 user.active? == false
,抛出自定义验证错误消息的最佳方法是什么?
我会尝试添加以下两个验证:
validates :email, uniqueness: { message: "message 1", if: 'active?' }
validates :email, uniqueness: { message: "message 2", if: '!active?' }
验证可以表示为实例方法。例如,我有一个具有 first_name
和 last_name
属性的 Student
模型。我想引入一个验证,当其中一个或两个名称为空时,它将抛出自定义错误。我可以通过以下方式做到这一点:
调用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