X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship%2FHasOne.pm;h=4dd97bd53fd5cd291d15fc01f449e22415224ff7;hb=e8fb771b9060f47eac9eaeef1d722cfe0dcfbe76;hp=1578c63208a0213e7b5206bad6bb8167ff648687;hpb=4ceaa6b5f05de445c7ffd4c47da2c81006050e62;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Relationship/HasOne.pm b/lib/DBIx/Class/Relationship/HasOne.pm index 1578c63..4dd97bd 100644 --- a/lib/DBIx/Class/Relationship/HasOne.pm +++ b/lib/DBIx/Class/Relationship/HasOne.pm @@ -24,7 +24,7 @@ sub _has_one { $class->ensure_class_loaded($f_class); my $pri = $class->_get_primary_key; - + $class->throw_exception( "might_have/has_one needs a primary key to infer a join; ". "${class} has none" @@ -60,7 +60,11 @@ sub _has_one { sub _get_primary_key { my ( $class, $target_class ) = @_; $target_class ||= $class; - my ($pri, $too_many) = $target_class->primary_columns; + my ($pri, $too_many) = eval { $target_class->_pri_cols }; + $class->throw_exception( + "Can't infer join condition for ${rel} on ${target_class}: $@" + ) if $@; + $class->throw_exception( "might_have/has_one can only infer join for a single primary key; ". "${class} has more"