La mia lettura di https://apidock.com/rails/ActiveRecord/Dirty
è che devi chiamare ..._will_change! prima tu modifichi l'attributo. Dovresti essere in grado di confermarlo esaminando le changes in vari scenari.
Aggiornamento:ho appena testato il comportamento con un attributo stringa e salva comunque la stringa aggiornata anche se la modifica è stata apportata prima di ..._will_change è chiamato, quindi la mia interpretazione potrebbe essere disattivata.