Witam,
Spotkałem się z dziwną sytuacją na produkcji.
Mianowicie mam w modelu callback który wygląda następująco.
after_commit :destroy_old_statuses, on: :create
i prywatną metodę która wygląda tak.
def destroy_old_statuses
self.class.where(statusable_id: statusable_id, statusable_type: statusable_type).where.not(id: id).delete_all
end
Nigdy nie było żadnych problemów, natomiast raz zdarzył się przypadek po insercie mysql jakby ominął pierwszego where’a i usunał wszystkie rekordy z bazy różne od id.
Query|DELETE FROM
flow_statuses
WHEREflow_statuses
.id
!= 5589442|
Próbowałem odtworzyć ten przypadek na wszelakie sposoby ale nie da się. Za każdym razem jest poprawnie. Wersja Railsow to rails (4.2.10).