Patch from abraxxa to make set_primary_key barf if called with non-existant columns
Matt S Trout [Thu, 1 Dec 2005 17:49:11 +0000 (17:49 +0000)]
lib/DBIx/Class/CDBICompat/ColumnGroups.pm
lib/DBIx/Class/PK.pm

index d87e6a4..80b17e0 100644 (file)
@@ -19,8 +19,8 @@ sub columns {
 
 sub _add_column_group {
   my ($class, $group, @cols) = @_;
-  $class->_register_column_group($group => @cols);
   $class->add_columns(@cols);
+  $class->_register_column_group($group => @cols);
 }
 
 sub _register_column_group {
index ddd37b9..b532a33 100644 (file)
@@ -43,6 +43,11 @@ define one or more columns as primary key for this class
 
 sub set_primary_key {
   my ($class, @cols) = @_;
+  # check if primary key columns are valid columns
+  for (@cols) {
+    $class->throw( "Column $_ can't be used as primary key because it isn't defined in $class" )
+      unless $class->has_column($_);
+  }
   my %pri;
   tie %pri, 'Tie::IxHash', map { $_ => {} } @cols;
   $class->_primaries(\%pri);