From 7f20bb995aa34c6c6869543209595ff811e9dbc3 Mon Sep 17 00:00:00 2001 From: Jon Leighton <j@jonathanleighton.com> Date: Fri, 16 Dec 2011 13:07:10 +0000 Subject: Don't store defaults in the schema cache --- activerecord/lib/active_record/attribute_methods/primary_key.rb | 4 ++-- activerecord/lib/active_record/connection_adapters/schema_cache.rb | 5 ++--- activerecord/test/cases/base_test.rb | 1 + activerecord/test/cases/connection_adapters/schema_cache_test.rb | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/activerecord/lib/active_record/attribute_methods/primary_key.rb b/activerecord/lib/active_record/attribute_methods/primary_key.rb index e3c7344f59..f575b26d04 100644 --- a/activerecord/lib/active_record/attribute_methods/primary_key.rb +++ b/activerecord/lib/active_record/attribute_methods/primary_key.rb @@ -72,8 +72,8 @@ module ActiveRecord when :table_name_with_underscore base_name.foreign_key else - if ActiveRecord::Base != self && connection.schema_cache.table_exists?(table_name) - connection.primary_key(table_name) + if ActiveRecord::Base != self && table_name + connection.schema_cache.primary_keys[table_name] else 'id' end diff --git a/activerecord/lib/active_record/connection_adapters/schema_cache.rb b/activerecord/lib/active_record/connection_adapters/schema_cache.rb index a8f7fd3648..da507fd3ae 100644 --- a/activerecord/lib/active_record/connection_adapters/schema_cache.rb +++ b/activerecord/lib/active_record/connection_adapters/schema_cache.rb @@ -8,7 +8,7 @@ module ActiveRecord @connection = conn @tables = {} - @columns = Hash.new do |h, table_name| + @columns = Hash.new do |h, table_name| h[table_name] = conn.columns(table_name, "#{table_name} Columns") end @@ -19,8 +19,7 @@ module ActiveRecord end @primary_keys = Hash.new do |h, table_name| - h[table_name] = table_exists?(table_name) ? - conn.primary_key(table_name) : 'id' + h[table_name] = table_exists?(table_name) ? conn.primary_key(table_name) : nil end end diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index a034dd7e3a..dd0aeada51 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -1494,6 +1494,7 @@ class BasicsTest < ActiveRecord::TestCase def test_original_primary_key k = Class.new(ActiveRecord::Base) def k.name; "Foo"; end + k.table_name = "posts" k.primary_key = "bar" assert_deprecated do diff --git a/activerecord/test/cases/connection_adapters/schema_cache_test.rb b/activerecord/test/cases/connection_adapters/schema_cache_test.rb index d5ae08cd58..cd98bf90cf 100644 --- a/activerecord/test/cases/connection_adapters/schema_cache_test.rb +++ b/activerecord/test/cases/connection_adapters/schema_cache_test.rb @@ -13,7 +13,7 @@ module ActiveRecord end def test_primary_key_for_non_existent_table - assert_equal 'id', @cache.primary_keys['omgponies'] + assert_nil @cache.primary_keys['omgponies'] end def test_caches_columns -- cgit v1.2.3