Sadly, I chose the hardest way to solve, I treat all change/add/remove/validate with my own handle_event, there a way to do this more elegant like in mentioned tutorial?
I do the add, delete and change through their own handle_events. IIRC, I ended up getting the current value from the changeset, adding/removing the item and providing the updated data, as changesets, to put_embed. For the change event, the params arrive in the correct format and are used to create a new changeset against the original data.
My data model is slightly different in that a rule group can contain rules and/or rule groups though.
edit: this slightly adjacent example may be helpful