The big issue I see is finding the associated objects that need
saving. AR isn't good at dealing with partially loaded has_many
association collections. I think you'd need a new API on associations
to enumerate the already loaded records and see which are dirty and
need saving.
It seems like some form of cascading save is important if :accessible => true is going to apply to updates, given that those updates need to be in the same transaction. Perhaps a simplistic API to tell AR about related objects would be a good stepping-stone to a full solution:
p = Project.find(some_id) task = p.tasks.find_by_name("send invoice") task.due_date = 3.days.from_now p.include_in_save(task) # <--- p.save
In the case of a mass-attribute assignment, #include_in_save could be called automatically.
Tom