Moja lektura https://apidock.com/rails/ActiveRecord/Dirty
jest to, że musisz zadzwonić ..._will_change! przed zmienisz atrybut. Powinieneś być w stanie to potwierdzić, sprawdzając changes w różnych scenariuszach.
Aktualizacja:właśnie przetestowałem zachowanie z atrybutem ciągu i nadal zapisuje zaktualizowany ciąg, nawet jeśli zmiana została wprowadzona przed ..._will_change nazywa się, więc moja interpretacja może być nieprawidłowa.