2009-08-03 10 views
6

¿Cómo puedo configurar dinámicamente una validación en rieles? por ejemplo si tienenvalidación dinámica de rieles

validates_length_of :name, within => dynamic 

La variable "dinámico" será establecido por el usuario. Al guardar, la validación debe usar el valor de la variable "dinámico" para configurar dentro de la configuración.

+0

Debe consultar [definir validaciones dinámicas con procs] (http://stackoverflow.com/a/9961015/1287376). –

Respuesta

13

No creo que validates_length_of admita parámetros dinámicos. Tendrá que duplicar el comportamiento en una validación personalizada.

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

Utiliza un rango estático, pero puede usar fácilmente su propia variable de rango personalizada.

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

Es posible que desee comprobar hacia fuera mi Railscasts episode on conditional validations y Episodio 3 en mi Everyday Active Record series.

+0

Gracias por su respuesta. Necesito la variable dinámica en validates_presence_of como esta: validates_presence_of: name,: locales => dynamic_array (: locales pueden ser [: en,: de, ...] dynamic). La configuración: configuraciones regionales por validates_presence_of viene con el complemento i18n_multi_locales_validations. – phlegx

Cuestiones relacionadas