aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/CHANGELOG2
-rwxr-xr-xactiverecord/lib/active_record/base.rb2
-rw-r--r--activerecord/test/pk_test.rb4
3 files changed, 6 insertions, 2 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG
index 5024362bf5..dc9bb28862 100644
--- a/activerecord/CHANGELOG
+++ b/activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Delegate access to a customized primary key to the conventional id method. #2444. [Blair Zajac <blair@orcaware.com>]
+
* Fix errors caused by assigning a has-one or belongs-to property to itself
* Add ActiveRecord::Base.schema_format setting which specifies how databases should be dumped [Sam Stephenson]
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 3f0201a202..8af2c33ce5 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1331,6 +1331,8 @@ module ActiveRecord #:nodoc:
if @attributes.include?(method_name)
define_read_methods if self.class.read_methods.empty? && self.class.generate_read_methods
read_attribute(method_name)
+ elsif self.class.primary_key.to_s == method_name
+ id
elsif md = /(=|\?|_before_type_cast)$/.match(method_name)
attribute_name, method_type = md.pre_match, md.to_s
if @attributes.include?(attribute_name)
diff --git a/activerecord/test/pk_test.rb b/activerecord/test/pk_test.rb
index 24f9bc4097..d77982df1b 100644
--- a/activerecord/test/pk_test.rb
+++ b/activerecord/test/pk_test.rb
@@ -30,10 +30,10 @@ class PrimaryKeysTest < Test::Unit::TestCase
assert_equal keyboard.id, Keyboard.find_by_name('HHKB').id
end
- def test_customized_primary_key_can_be_set_before_saving
+ def test_customized_primary_key_can_be_get_before_saving
keyboard = Keyboard.new
assert_respond_to(keyboard, :key_number)
- assert_nothing_raised { keyboard.key_number = 1 }
+ assert_nothing_raised { keyboard.key_number }
end
def test_customized_string_primary_key_settable_before_save