+You can feed the ->create method with a recursive datastructure and have the related records
+created. Unfortunately you cannot do a similar thing with update_or_create - this module
+tries to fill that void.
+
+It is a base class for ResultSets providing just one method: recursive_update
+which works just like update_or_create but can recursively update or create
+data objects composed of multiple rows. All rows need to be identified by primary keys
+- so you need to provide them in the update structure (unless they can be deduced from
+the parent row - for example when you have a belongs_to relationship).
+If not all colums comprising the primary key are specified - then a new row will be created,
+with the expectation that the missing columns will be filled by it (as in the case of auto_increment
+primary keys).
+
+
+If the resultset itself stores an assignement for the primary key,
+like in the case of:
+
+ my $restricted_rs = $user_rs->search( { id => 1 } );
+
+then you need to inform recursive_update about additional predicate with a second argument:
+
+ my $user = $restricted_rs->recursive_update( {
+ owned_dvds => [
+ {
+ title => 'One Flew Over the Cuckoo's Nest'
+ }
+ ]
+ },
+ [ 'id' ]
+ );
+
+This will work with a new DBIC release.
+
+For a many_to_many (pseudo) relation you can supply a list of primary keys
+from the other table - and it will link the record at hand to those and
+only those records identified by them. This is convenient for handling web
+forms with check boxes (or a SELECT box with multiple choice) that let you
+update such (pseudo) relations.
+
+For a description how to set up base classes for ResultSets see load_namespaces
+in DBIx::Class::Schema.
+
+=head1 DESIGN CHOICES
+
+Columns and relationships which are excluded from the updates hashref aren't
+touched at all.
+
+=head2 Treatment of belongs_to relations
+
+In case the relationship is included but undefined in the updates hashref,
+all columns forming the relationship will be set to null.
+If not all of them are nullable, DBIx::Class will throw an error.
+
+Updating the relationship:
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ owner => $user->id,
+ });
+
+Clearing the relationship (only works if cols are nullable!):
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ owner => undef,
+ });
+
+=head2 Treatment of might_have relationships
+
+In case the relationship is included but undefined in the updates hashref,
+all columns forming the relationship will be set to null.
+
+Updating the relationship:
+
+ my $user = $user_rs->recursive_update( {
+ id => 1,
+ address => {
+ street => "101 Main Street",
+ city => "Podunk",
+ state => "New York",
+ }
+ });
+
+Clearing the relationship:
+
+ my $user = $user_rs->recursive_update( {
+ id => 1,
+ address => undef,
+ });