Czy to możliwe by ActiveRecord ominął zapytanie?


#1

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 WHERE flow_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).