2009-08-03 10 views
6

Jak mogę dynamicznie skonfigurować sprawdzanie poprawności w szynach? Na przykład jeśli mamRails Dynamic Validation

validates_length_of :name, within => dynamic 

Zmienna „dynamiczny” zostanie ustawiony przez użytkownika. Przy zapisie walidacja powinna wykorzystywać wartość zmiennej "dynamic", aby skonfigurować wewnętrzną konfigurację.

+0

Powinieneś rzucić okiem na [określenie dynamicznych walidacji za pomocą proców] (http://stackoverflow.com/a/9961015/1287376). –

Odpowiedz

13

Nie wierzę, że validates_length_of obsługuje parametry dynamiczne. Będziesz musiał zduplikować zachowanie w niestandardowej walidacji.

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

Wykorzystuje zakres statyczny, ale można łatwo użyć własnej niestandardowej zmiennej zakresu.

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

Możesz sprawdzić moje Railscasts episode on conditional validations i odcinek 3 w moim Everyday Active Record series.

+0

Dziękuję za odpowiedź. Potrzebuję zmiennej dynamicznej na validates_presence_of w następujący sposób: validates_presence_of: name,: locales => dynamic_array (: locales może być [: en,: de, ...] dynamic). Konfiguracja: locales według validates_presence_of zawiera wtyczkę i18n_multi_locales_validations. – phlegx