make has-many rels accept a single hashref in populate, if there is just one thing... rfc/populate_single_has_many
Robert Buels [Tue, 10 May 2011 06:44:15 +0000 (23:44 -0700)]
lib/DBIx/Class/Row.pm
t/100populate.t

index 60c854b..495cf42 100644 (file)
@@ -202,8 +202,9 @@ sub new {
           $related->{$key} = $rel_obj;
           next;
         }
-        elsif ($acc_type eq 'multi' && ref $attrs->{$key} eq 'ARRAY' ) {
+        elsif ($acc_type eq 'multi') {
           my $others = delete $attrs->{$key};
+          $others = [ $others ] unless ref $others eq 'ARRAY';
           my $total = @$others;
           my @objects;
           foreach my $idx (0 .. $#$others) {
index 3109999..5aa706c 100644 (file)
@@ -322,4 +322,14 @@ lives_ok ( sub {
   ])
 }, 'empty has_many relationship accepted by populate');
 
+lives_ok ( sub {
+  $schema->populate('Artist', [
+         { name => 'Snuggy Bottoms',
+           cds => { title => 'Hit My Singlet', year => 1973,
+                    tracks => { title => 'Grunt', position => 0 },
+                  },
+         },
+  ])
+}, 'single hashref accepted by populate on has_many');
+
 done_testing;