2012-01-23 64 views
1
class A 
    include ActiveModel::Validations 
    attr_reader :operator 
    def initialize(operator) 
    @operator = operator 
    validates_inclusion_of :operator, in => operators 
    end 

    def operators 
    .... 
    end 
end 

这里我想验证运算符的包含动态。方法操作符返回一个动态数组。Rails验证包含动态

上述代码无效。我如何动态实现验证? [R

回答

2

你可以试试:

def initialize(operator) 
    self.class.class_eval do 
    validates_inclusion_of :operator, :in => operators 
    end 
end 

虽然我不明白为什么你就不能在类级别定义它。请注意,参数:in可以是lambda,详情参考:http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of

+0

谢谢。我会检查这个。 'operatos'方法根据对象动态地选择操作符,这就是为什么我没有把它放在类的级别。 – Sayuj

+1

是的,在这种情况下,您可以将lambda用于:in。 –