Когда вы определяете обратный вызов, очень важно, чтобы вы случайно не вернули false
, что является сигналом для остановки цепочки, и это то, что вы делаете здесь в одном случае.
Переписанная версия, позволяющая избежать этой проблемы:
after_save :update_status
def update_status
self.received = quantity_received >= quantity
return
end
Вы можете вернуть все, кроме false
, поэтому последняя строка может быть nil
или true
точно такой же.