我有Address
模型,我需要根据:zipcode
验证:country
长度。
例如:
:country == 'us'
,则最长:zipcode
长度应为5
。:country == 'br'
,则最长:zipcode
长度应为8
。等等......
我正在运行Ruby on Rails 4.2.7。
答案 0 :(得分:2)
class Address < ActiveRecord::Base
ZIP_CODE_VALIDATION = { 'us' => 5, 'br' => 8 }.freeze
validate :zip_code_by_country
def max_length
ZIP_CODE_VALIDATION[country]
end
def zip_code_by_country
return unless zipcode.length > max_length
errors.add(:zipcode, "can't be greater than #{max_length}")
end
end