You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
in HTML::FormHandler::TraitFor::Model::DBIC::set_item, the primary key(s) are used to calculate the $item_id, and then the $item_id is tested for truthiness. This check is incorrect for schema objects with multiple primary keys, as the item_id will always be true ([ { key1 => ..., key2 => ..., } ]). Calling $self->item_id($item_id) when the primary keys are undefined then results in an uninitialized warning in set_item_id.
I think this is the right change to make (I'm not sure how to test it):
--- a/lib/HTML/FormHandler/TraitFor/Model/DBIC.pm
+++ b/lib/HTML/FormHandler/TraitFor/Model/DBIC.pm
@@ -563,7 +563,10 @@ sub set_item {
}
elsif ( @primary_columns > 1 ) {
my @pks = map { $_ => $item->get_column($_) } @primary_columns;
- $item_id = [ { @pks }, { key => 'primary' } ];
+ # only set item_id if all PK columns are set
+ if (not grep { !$_ } @pks) {
+ $item_id = [ { @pks }, { key => 'primary' } ];
+ }
}
if ($item_id) {
$self->item_id($item_id);
The text was updated successfully, but these errors were encountered:
in HTML::FormHandler::TraitFor::Model::DBIC::set_item, the primary key(s) are used to calculate the $item_id, and then the $item_id is tested for truthiness. This check is incorrect for schema objects with multiple primary keys, as the item_id will always be true (
[ { key1 => ..., key2 => ..., } ]
). Calling$self->item_id($item_id)
when the primary keys are undefined then results in an uninitialized warning inset_item_id
.I think this is the right change to make (I'm not sure how to test it):
The text was updated successfully, but these errors were encountered: