2012-01-23 90 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。 –