Я использую Rails 3.2.19, и у меня возникают проблемы при использовании более одного if в качестве условного оператора в обратном вызове.
Работает следующее смешанное двойное условие (оценивает first_condtion и second_condition)
after_save :after_save_method, unless: :first_condition?, if: :second_condition?
Но если я использую два условия if, метод after_save_method выполняется каждый раз. (Кажется, принимает только последнее условие)
after_save :after_save_method, if: :first_condition?, if: :second_condition?
Я также попытался объединить два условия с помощью «&&», но это не сработало.
after_save :after_save_method, if: :first_condition? && :second_condition?
Почему я не могу использовать if более одного раза?
В apidoc есть пример, если и если в http://edgeguides.rubyonrails.org/active_record_callbacks.html#multiple-conditions-for-callbacks, но ничего не говорит о недопустимости двух "если".
Мое решение для этого состояло в том, чтобы поместить весь необходимый код в метод и только оценить этот метод, но я просто хочу убедиться в if материале.