【问题标题】:skip validation in parent class跳过父类中的验证
【发布时间】:2020-10-01 15:36:26
【问题描述】:

我有一些从 A 派生的课程。 A 做一些验证 在从 A 继承的 B 类的特定情况下,我想跳过验证。

顺便说一句,我正在使用主动交互

class A < ActiveInteraction::Base
  string :s

  validate :valid
        
  private

  def vaild
    #raise something unless s equals "banana"
  end
end


class B < A 
  #do something here to skip A's validation??          
  def execute
    #super cool logic
  end
end

【问题讨论】:

标签: ruby-on-rails ruby validation


【解决方案1】:

由于这是一个子类,你可以重写valid 方法来做别的事情,甚至是什么都不做

class B < A       
  def execute
    #super cool logic
  end

  private

  def valid
    # Do nothing
  end
end

【讨论】:

    【解决方案2】:

    您可以添加一个回调来选择性地跳过验证:

    class A < ActiveInteraction::Base
      string :s
    
      validate :valid, unless: :skip_validation
            
      private
    
      def vaild
        # raise something unless s equals "banana"
      end
    
      def skip_validation
        false
      end
    end
    
    
    class B < A 
      def execute
        #super cool logic
      end
    
      private
    
      def skip_validation
        true # or more fancy logic
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2019-12-14
      • 1970-01-01
      • 2019-04-14
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多