the other day, I thought it may be useful to have a .sync() method on
ActiveRecord objects. The behavior would be something between a
.reload() and a .save().
- At every reload, an internal hash would store the attributes as they
were in the db at reload time (think svn’s working-base)
- whenever attributes are changed on the object, the values of that
hash would remain untouched
- whenever sync is called, the tuple gets reloaded from the db and both
the current db tuple and the current object attribute values are
compared to the working-base hash. if changes were made on the object,
they get populated to the db and vice versa.
- conflicts could result in exceptions or there could be defaults like
my_object.sync :on_conflict_follow => :database
I didn’t have time to implement this so far, but I wanted to share this
idea and get feedback. What do you think?