- for my $name ( keys %$updates ){
- next if exists $columns{ $name };
- if(
- #$object->can($name)
- $object->result_source->has_relationship($name)
- && !$self->is_for_column( $object, $name, $updates->{$name} )
- ){
- # updating relations that that should be done before the row is inserted into the database
- # like belongs_to
- my $info = $object->result_source->relationship_info( $name );
- if( $info #and not $info->{attrs}{accessor} eq 'multi'
- and
- _master_relation_cond( $object->result_source, $info->{cond}, $self->_get_pk_for_related( $name ) )
- ){
- my $related_result = $self->related_resultset( $name )->result_source->resultset;
- my $resolved = $self->result_source->resolve_condition(
- $info->{cond}, $name, $object
- );
-# warn 'resolved: ' . Dumper( $resolved ); use Data::Dumper;
- $resolved = undef if $DBIx::Class::ResultSource::UNRESOLVABLE_CONDITION == $resolved;
- if( ref $updates->{$name} eq 'ARRAY' ){
- for my $sub_updates ( @{$updates->{$name}} ) {
- my $sub_object = $related_result->recursive_update( $sub_updates, $resolved );
- }
- }
- else {
- my $sub_object = $related_result->recursive_update( $updates->{$name}, $resolved );
- $object->set_from_related( $name, $sub_object );
- }
- }
- }
+ for my $name ( keys %pre_updates ) {
+ my $info = $object->result_source->relationship_info($name);
+ _update_relation( $self, $name, $updates, $object, $info );