代码之家  ›  专栏  ›  技术社区  ›  oldhomemovie

轨道:列之间的验证

  •  1
  • oldhomemovie  · 技术社区  · 15 年前

    假设,我们有一个模型,我们称之为文章。在那里,我们有两列, 最大值 . 规则是: 不能大于或等于 最大值 . 如何解决此自定义验证类型?有什么想法吗?

    更进一步,假设我们有列 性格 马德亚 . 任务是创建一个验证,当“character=human”和“made-of=steel”时,这将有助于避免出现这种情况。

    是否有标准的例程来管理列之间的“形而上学”冲突?

    2 回复  |  直到 15 年前
        1
  •  4
  •   hgmnz    15 年前

    您可以使用validate定义自己的验证。例如:

    class Article < ActiveRecord::Base
      validate :min_greater_than_max, :humans_aint_made_of_steel
    
      def min_greater_than_max
        errors.add(:min, "can't be greater than max") if min > max
      end 
    
      def humans_aint_made_of_steel
        errors.add(:human, "can't be made of steel") if character == 'human' && made_of == 'steel'
      end
    
    end
    
        2
  •  0
  •   Eimantas    15 年前

    有通用方法 validate 它可以处理列之间的所有验证。但是要小心,看起来您对验证的需求需要大量的测试。