Deleting model using optimistic locking results in ActiveRecord::StaleObjectError


I have a model defined like so:

class Course < ActiveRecord::Base
has_many :attendances, :dependent => :destroy
has_many :attendees, :through => :attendances, :source => :user

when I attempt to delete a Course model, it results in an
ActiveRecord::StaleObjectError. Reviewing the resulting SQL calls shows
that the ‘lock_version’ column gets incremented on each dependent
‘Attendance’ model that is deleted. When the Course model is deleted,
lock_version no longer matches the persisted row in the database, and
the StaleObjectError. Any help on how to handle this situation would be
greatly appreciated.


The only workaround to this I’ve been able to find is to use :dependent
:delete_all. This performs a general delete of related objects and
update the lock_version on the parent.


Hi Coriordan,
That worked for me, many thanks, but only drawback is, delete_all wont
the callbacks in children classes.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs