X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Controller-DBIC-API.git;a=blobdiff_plain;f=lib%2FCatalyst%2FController%2FDBIC%2FAPI.pm;h=061dbb3d58971e1b456ebd08641e2844e209e93d;hp=a572fa8389c71d4c64f207e542786fc934efe62e;hb=3b12c2cd6893d11ca090fbd599782f0a27979922;hpb=8ee81496088e875e33f8b9cf289da3eb9940fa0e diff --git a/lib/Catalyst/Controller/DBIC/API.pm b/lib/Catalyst/Controller/DBIC/API.pm index a572fa8..061dbb3 100644 --- a/lib/Catalyst/Controller/DBIC/API.pm +++ b/lib/Catalyst/Controller/DBIC/API.pm @@ -635,7 +635,7 @@ sub validate_object } # check for multiple values - if (ref($value) && !($value == JSON::Any::true || $value == JSON::Any::false)) + if (ref($value) && !(reftype($value) eq reftype(JSON::Any::true))) { require Data::Dumper; die "Multiple values for '${key}': ${\Data::Dumper::Dumper($value)}"; @@ -719,7 +719,7 @@ sub save_object =method_protected update_object_from_params -update_object_from_params iterates through the params to see if any of them are pertinent to relations. If so it calls L with the object, and the relation parameters. Then it calls ->upbdate on the object. +update_object_from_params iterates through the params to see if any of them are pertinent to relations. If so it calls L with the object, and the relation parameters. Then it calls ->update on the object. =cut @@ -730,13 +730,14 @@ sub update_object_from_params foreach my $key (keys %$params) { my $value = $params->{$key}; - if (ref($value) && !($value == JSON::Any::true || $value == JSON::Any::false)) + if (ref($value) && !(reftype($value) eq reftype(JSON::Any::true))) { $self->update_object_relation($c, $object, delete $params->{$key}, $key); } + $object->$key($value); } - $object->update($params); + $object->update(); } =method_protected update_object_relation @@ -751,7 +752,11 @@ sub update_object_relation my $row = $object->find_related($relation, {} , {}); if ($row) { - $row->update($related_params); + foreach my $key (keys %$related_params) { + my $value = $related_params->{$key}; + $row->$key($value); + } + $row->update(); } else { $object->create_related($relation, $related_params); @@ -770,7 +775,7 @@ sub insert_object_from_params my %rels; while (my ($k, $v) = each %{ $params }) { - if (ref $v && !($v == JSON::Any::true || $v == JSON::Any::false)) { + if (ref($v) && !(reftype($v) eq reftype(JSON::Any::true))) { $rels{$k} = $v; } else {