【问题标题】:ActiveRecord multiple custom length validationActiveRecord 多个自定义长度验证
【发布时间】:2016-10-28 12:40:39
【问题描述】:
我有一个Address 模型,我需要根据:country 验证:zipcode 的长度。
例如:
- 如果
:country == 'us',则:zipcode 的最大长度应为5。
- 如果
:country == 'br',则:zipcode 的最大长度应为8。
等等……
我正在运行 Ruby on Rails 4.2.7。
【问题讨论】:
标签:
ruby-on-rails
validation
ruby-on-rails-4
model
rails-activerecord
【解决方案1】:
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