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=eeaecad66e3bd2e893648462c109695a4a94c47f;hp=acc8722ff767869ef2f12a25a9bab266f881df3a;hb=04f135e4176ab36780d168136947d1a748178ca7;hpb=f51139753a4da2d24e09894b45bb9efc53b9ef17 diff --git a/lib/Catalyst/Controller/DBIC/API.pm b/lib/Catalyst/Controller/DBIC/API.pm index acc8722..eeaecad 100644 --- a/lib/Catalyst/Controller/DBIC/API.pm +++ b/lib/Catalyst/Controller/DBIC/API.pm @@ -734,9 +734,18 @@ sub update_object_from_params { $self->update_object_relation($c, $object, delete $params->{$key}, $key); } + # accessor = colname + elsif ($object->can($key)) { + $object->$key($value); + } + # accessor != colname + else { + my $accessor = $object->result_source->column_info($key)->{accessor}; + $object->$accessor($value); + } } - $object->update($params); + $object->update(); } =method_protected update_object_relation @@ -751,7 +760,23 @@ 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}; + if (ref($value) && !(reftype($value) eq reftype(JSON::Any::true))) + { + $self->update_object_relation($c, $row, delete $related_params->{$key}, $key); + } + # accessor = colname + elsif ($row->can($key)) { + $row->$key($value); + } + # accessor != colname + else { + my $accessor = $row->result_source->column_info($key)->{accessor}; + $row->$accessor($value); + } + } + $row->update(); } else { $object->create_related($relation, $related_params); @@ -867,6 +892,12 @@ sub each_object_inflate return { $object->get_columns }; } +=method_protected serialize + +multiple actions forward to serialize which uses Catalyst::Action::Serialize. + +=cut + # from Catalyst::Action::Serialize sub serialize :ActionClass('Serialize') { } @@ -1032,7 +1063,7 @@ Arguments to pass to L when performing search for L =head3 page -Arguments to pass to L when performing search for L. +Arguments to pass to L when performing search for L. =head1 EXTENDING