+
+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' ]
+ );
+
+
+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
+
+=head2 Treatment of many to many pseudo relations
+
+The function gets the information about m2m relations from DBIx::Class::IntrospectableM2M.
+If it is not loaded in the ResultSource classes - then the code relies on the fact that:
+ if($object->can($name) and
+ !$object->result_source->has_relationship($name) and
+ $object->can( 'set_' . $name )
+ )
+
+then $name must be a many to many pseudo relation. And that in a
+similarly ugly was I find out what is the ResultSource of objects from
+that many to many pseudo relation.
+
+
+=head1 INTERFACE