Rails 动态验证包含

Say*_*yuj 4 ruby validation ruby-on-rails

class A
  include ActiveModel::Validations
  attr_reader :operator
  def initialize(operator)
    @operator = operator
    validates_inclusion_of :operator, in => operators
  end

  def operators
    ....
  end
end
Run Code Online (Sandbox Code Playgroud)

在这里,我想动态验证运算符的clusion_of。方法操作符返回动态的操作符数组。

上面的代码不起作用。如何动态实现验证?r

Mic*_*ski 5

您可以尝试:

def initialize(operator)
  self.class.class_eval do
    validates_inclusion_of :operator, :in => operators
  end
end
Run Code Online (Sandbox Code Playgroud)

虽然我不明白为什么你不能在班级级别定义它。请注意, :in 的参数可以是 lambda,有关详细信息,请参阅:http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of