Rails: несколько условий в валидации - PullRequest
16 голосов
/ 04 октября 2011

Использование: Rails 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?   

, которые я хотел бы проверить для нескольких условий if (например, в примере),Но похоже, что Rails воспринимает эти операторы как OR.Один возвращает ложь, а другой возвращает истину, что делает проверку правильной.

Итак, как мне проверить, что эта проверка выполняет ОБА if-операторов (bmi_calculation И is_metric)?

1 Ответ

46 голосов
/ 04 октября 2011

Используйте лямбду в качестве условия if:

validates_numericality_of :person_weight_kg, 
  if: -> record { record.bmi_calculation? && record.is_metric? }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...