From 00b95eb265ff606ae0a7b650265aa3c6fd43a1da Mon Sep 17 00:00:00 2001 From: Ernie Miller Date: Thu, 11 Feb 2010 12:30:33 -0500 Subject: [PATCH] belongs_to associations now honor :primary_key option for joins Signed-off-by: Jeremy Kemper --- activerecord/lib/active_record/associations.rb | 2 +- .../test/cases/associations/belongs_to_associations_test.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index 3ff8aba9b6..eeaccd9922 100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -2173,7 +2173,7 @@ module ActiveRecord " #{join_type} %s ON %s.%s = %s.%s " % [ table_name_and_alias, connection.quote_table_name(aliased_table_name), - reflection.klass.primary_key, + reflection.options[:primary_key] || reflection.klass.primary_key, connection.quote_table_name(parent.aliased_table_name), options[:foreign_key] || reflection.primary_key_name ] diff --git a/activerecord/test/cases/associations/belongs_to_associations_test.rb b/activerecord/test/cases/associations/belongs_to_associations_test.rb index 9f3945f84f..cccc5cdd39 100644 --- a/activerecord/test/cases/associations/belongs_to_associations_test.rb +++ b/activerecord/test/cases/associations/belongs_to_associations_test.rb @@ -31,6 +31,12 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase assert_equal companies(:first_firm).name, client.firm_with_primary_key.name end + def test_belongs_to_with_primary_key_joins_on_correct_column + sql = Client.send(:construct_finder_sql, :joins => :firm_with_primary_key) + assert sql !~ /\.id/ + assert sql =~ /\.name/ + end + def test_proxy_assignment account = Account.find(1) assert_nothing_raised { account.firm = account.firm }