首页 > 解决方案 > 扩展一个 apipie-rails 验证器

问题描述

我想扩展NumberValidator到也验证minmax值。如果失败,我仍想调用默认值NumberValidator并让它返回自己的description( )。Must be a number现在,我总是得到自己的实现描述('必须是...之间的数字')

这是我迄今为止所拥有的:

class NumberValidator < Apipie::Validator::BaseValidator

  def initialize(param_description, argument, options)
    super(param_description)
    @number_validator = Apipie::Validator::NumberValidator.new(param_description)
    @type = argument
    @options = options
  end

  def validate(value)
    return false unless @number_validator.valid?(value)

    if (@options[:min]) && (@options[:max])
      self.class.validate(value) && value.to_i.between?(@options[:min], @options[:max])
    end

    true
  end

  def self.build(param_description, argument, options, block)
    if argument == :number
      self.new(param_description, argument, options)
    end
  end

  def description
    "Must be a number between #{@options[:min]} and #{@options[:max]}."
  end
end

标签: ruby-on-railsapipie

解决方案


推荐阅读