2009-08-03 11 views
6

レールで検証を動的に設定するにはどうすればよいですか?私はRails動的検証

validates_length_of :name, within => dynamic 

を持っている場合たとえば、 は、変数「ダイナミック」は、ユーザによって設定されます。保存時に、バリデーションで変数 "dynamic"の値を使用して内部構成を構成する必要があります。

+0

[動的検証とprocsの定義](http://stackoverflow.com/a/9961015/1287376)を参照してください。 –

答えて

13

私はvalidates_length_ofが動的パラメータをサポートしているとは思いません。カスタム検証で動作を複製する必要があります。

# in model 
def validate 
    unless (5..10).member? name.length 
    errors.add :name, "must be within 5 to 10 characters" 
    end 
end 

これは静的範囲を使用しますが、独自のカスタム範囲変数を簡単に使用できます。

def validate 
    unless some_range.member? name.length 
    errors.add :name, "must be within #{some_range.first} to #{some_range.last} characters" 
    end 
end 

あなたは私のEveryday Active Record seriesで私Railscasts episode on conditional validationsエピソード3をチェックアウトすることができます。

+0

あなたの答えをありがとう。私はvalidates_presence_ofにdynamic変数が必要です:validates_presence_of:name、:locales => dynamic_array(:ロケールは[:en、:de、...]動的になります)設定:validates_presence_ofのロケールには、i18n_multi_locales_validationsプラグインが付属しています。 – phlegx

関連する問題