aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-12-20 16:33:07 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-12-20 19:47:15 -0800
commit099a210c837daae692154add3b9da0a207825d35 (patch)
tree1f9db8fd9bcaa496333d3b99cf31fe6a52ef739d /activerecord
parent05168067609b867eb77a99ff3eb39250d22ae046 (diff)
downloadrails-099a210c837daae692154add3b9da0a207825d35.tar.gz
rails-099a210c837daae692154add3b9da0a207825d35.tar.bz2
rails-099a210c837daae692154add3b9da0a207825d35.zip
if there is no base name, we cannot determine a primary key
Diffstat (limited to 'activerecord')
-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