diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-20 16:33:07 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-20 19:47:15 -0800 |
commit | 099a210c837daae692154add3b9da0a207825d35 (patch) | |
tree | 1f9db8fd9bcaa496333d3b99cf31fe6a52ef739d | |
parent | 05168067609b867eb77a99ff3eb39250d22ae046 (diff) | |
download | rails-099a210c837daae692154add3b9da0a207825d35.tar.gz rails-099a210c837daae692154add3b9da0a207825d35.tar.bz2 rails-099a210c837daae692154add3b9da0a207825d35.zip |
if there is no base name, we cannot determine a primary key
-rw-r--r-- | activerecord/lib/active_record/attribute_methods/primary_key.rb | 6 | ||||
-rw-r--r-- | activerecord/test/cases/base_test.rb | 2 |
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 |