0
我有国家代码的电话号码字段在下拉列表中,现在我想验证最大长度验证根据国家代码在下拉选择。根据国家代码的选择验证电话号码的最小和最大长度
profile.rb
validates_length_of :phone, :minimum => 10, :maximum => 10 if country_code = 91
我有国家代码的电话号码字段在下拉列表中,现在我想验证最大长度验证根据国家代码在下拉选择。根据国家代码的选择验证电话号码的最小和最大长度
profile.rb
validates_length_of :phone, :minimum => 10, :maximum => 10 if country_code = 91
你不能做到这一点; if
将在类定义处进行评估,而不是在验证时进行评估。你要么需要使用:if
选项:
validates_length_of :phone, :minimum => 10, :maximum => 10,
:if => Proc.new { |x| x.country_code == 91 }
,或者你需要使用一个自定义的验证,是这样的:
PHONE_LENGTH_LIMITS_BY_COUNTRY_CODE = {
91 => [10, 10]
}
def phone_number_is_correct_according_to_country_code
min, max = *PHONE_LENGTH_LIMITS_BY_COUNTRY_CODE[country_code]
if phone.length < min || phone.length > max
errors.add(:phone, "must be between #{min} and #{max} characters")
end
end
validate :phone_number_is_correct_according_to_country_code
(免责声明:未经测试的代码)