2011-10-04 4 views
14

의 조건을 사용하면 여러는 : 3.0.3레일 : 검증

내가 이와 같은 검증이 레일 하나

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

내가 여러에 대한 유효성을 확인하고자하는 경우 - 조건 등과 같이 (예). 그러나 Rails는 이러한 진술을 OR로 처리합니다. 하나는 false를 반환하고 하나는 true를 반환하여 유효성 검사를 통과시킵니다.

그렇다면이 유효성 검사가 if-statements (bmi_calculation AND is_metric)를 충족하는지 어떻게 확인합니까?

답변

41

if 조건으로 람다를 사용

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

감사합니다! 그 트릭을 ... – Christoffer