2011-10-04 14 views
14

Usando: Carriles 3.0.3Rieles: Múltiples si las condiciones en la validación

que tienen validaciones como éste:

validates_numericality_of :person_weight_kg, :greater_than => 0, :message => "value_must_be_number_over_zero", :if => :bmi_calculation?, :if => :is_metric? 

que me gustaría para validar si para múltiples-condiciones (como en el ejemplo). Pero parece, sin embargo, que Rails trata estas declaraciones como OR. Uno devuelve falso y uno devuelve verdadero, lo que hace que valide.

Entonces, ¿cómo puedo comprobar que esta validación cumple con AMBOS enunciados if (bmi_calculation AND is_metric)?

Respuesta

41

Use un lambda como la condición if:

validates_numericality_of :person_weight_kg, 
    if: -> record { record.bmi_calculation? && record.is_metric? } 
+1

Gracias! Eso hizo el truco ... – Christoffer

Cuestiones relacionadas