【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2012-06-14
      • 2012-11-30
      • 2018-08-09
      • 1970-01-01
      相关资源
      最近更新 更多