2015-07-21 61 views

回答

2

你不能做到這一點; 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 

(免責聲明:未經測試的代碼)

相關問題