2012-01-23 3 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 

여기서 동적으로 inclusion_of에 대한 연산자를 확인하고 싶습니다. 메서드 연산자는 동적 인 연산자 배열을 반환합니다.레일 유효성 검사 포함 동적으로

위의 코드는 작동하지 않습니다. 유효성 검사를 어떻게 동적으로 구현할 수 있습니까? 당신은 시도 할 수

답변

2

r에 : 나는 이해하지 않지만

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

왜 그냥 클래스 수준에서 정의 할 수 없습니다. : in의 인수는 람다가 될 수 있습니다. 자세한 내용은 다음을 참조하십시오. http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of

+0

감사합니다. 나는 이것을 점검 할 것이다. 'operatos' 메서드는 객체에 따라 연산자를 동적으로 선택합니다. 그래서 클래스 수준을 넣지 않았습니다. – Sayuj

+1

예,이 경우에 람다를 사용할 수 있습니다 : in. –