aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/attribute_methods/primary_key.rb6
-rw-r--r--activerecord/test/cases/base_test.rb2
2 files changed, 6 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/primary_key.rb b/activerecord/lib/active_record/attribute_methods/primary_key.rb
index a10e94d5f7..5ae1ebc9cf 100644
--- a/activerecord/lib/active_record/attribute_methods/primary_key.rb
+++ b/activerecord/lib/active_record/attribute_methods/primary_key.rb
@@ -24,11 +24,13 @@ module ActiveRecord
end
def get_primary_key(base_name) #:nodoc:
+ return unless base_name
+
case primary_key_prefix_type
when :table_name
- base_name.to_s.foreign_key(false)
+ base_name.foreign_key(false)
when :table_name_with_underscore
- base_name.to_s.foreign_key
+ base_name.foreign_key
else
'id'
end
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index 86d4a90fc4..dc5e912412 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -1069,6 +1069,7 @@ class BasicsTest < ActiveRecord::TestCase
def test_define_attr_method_with_block
k = Class.new( ActiveRecord::Base )
+ k.primary_key = "id"
k.send(:define_attr_method, :primary_key) { "sys_" + original_primary_key }
assert_equal "sys_id", k.primary_key
end
@@ -1109,6 +1110,7 @@ class BasicsTest < ActiveRecord::TestCase
def test_set_primary_key_with_block
k = Class.new( ActiveRecord::Base )
+ k.primary_key = 'id'
k.set_primary_key { "sys_" + original_primary_key }
assert_equal "sys_id", k.primary_key
end