2009-08-03 65 views
6

如何在rails中動態配置驗證? 例如,如果我有Rails動態驗證

validates_length_of :name, within => dynamic 

變量「動態」將由用戶設定。保存時,驗證應使用變量「dynamic」的值來配置內部配置。

+0

你應該看看[用procs定義動態驗證](http://stackoverflow.com/a/9961015/1287376)。 – 2016-06-03 20:31:36

回答

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這樣的動態變量:validates_presence_of:name,:locales => dynamic_array(:locales可以是[:en,:de,...] dynamic)。配置:locales by validates_presence_of附帶i18n_multi_locales_validations插件。 – phlegx 2009-08-03 17:08:10