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
(免責聲明:未經測試的代碼)