};
$resolved ||= {};
- # warn 'entering: ' . $self->result_source->from();
+ my $source = $self->result_source;
+
+ # warn 'entering: ' . $source->from();
carp 'fixed fields needs to be an array ref'
if defined $fixed_fields && ref $fixed_fields ne 'ARRAY';
if ( blessed($updates) && $updates->isa('DBIx::Class::Row') ) {
return $updates;
}
- if ( $updates->{id} ) {
+ if ( exists $updates->{id} ) {
+ # warn "finding object by id " . $updates->{id} . "\n";
$object = $self->find( $updates->{id}, { key => 'primary' } );
+ # warn "object not found by id\n"
+ # unless defined $object;
}
my %fixed_fields = map { $_ => 1 } @$fixed_fields
if $fixed_fields;
my @missing =
grep { !exists $updates->{$_} && !exists $fixed_fields{$_} }
- $self->result_source->primary_columns;
+ $source->primary_columns;
if ( !$object && !scalar @missing ) {
# warn 'finding by: ' . Dumper( $updates ); use Data::Dumper;
# warn 'finding by +resolved: ' . Dumper( $updates ); use Data::Dumper;
$object = $self->find( $updates, { key => 'primary' } );
}
- $object ||= $self->new( {} );
+
+ $object = $self->new( {} )
+ unless defined $object;
# warn Dumper( $updates ); use Data::Dumper;
# direct column accessors
# warn 'updates: ' . Dumper( $updates ); use Data::Dumper;
# warn 'columns: ' . Dumper( \%columns_by_accessor );
for my $name ( keys %$updates ) {
- my $source = $self->result_source;
-
# columns
if ( exists $columns_by_accessor{$name}
&& !( $source->has_relationship($name)