2012-01-23 12 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の演算子を検証したいと考えています。メソッド演算子は動的な演算子の配列を返します。Railsバリデーションの包含を動的に

上記のコードは機能しません。どのようにして検証を動的に実装できますか? R

答えて

2

あなたは試みることがあります。

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に使用できます。 –

関連する問題