diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index bae2cab4579a30c65b8c29b82f55e279d1e51518..f8fa71c60b0a765510a28794ba2d63a0ec22b042 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,7 @@ +* Fix inspection behavior when the :id column is not primary key. + + *namusyaka* + * Deprecate locking records with unpersisted changes. *Marc Schütz* diff --git a/activerecord/lib/active_record/attribute_methods/read.rb b/activerecord/lib/active_record/attribute_methods/read.rb index 369a6e35aa80fd308276a123399bd9fe3509c4a7..fdc4bf6621d7f252ac6b736d6fbe2005c1fb272b 100644 --- a/activerecord/lib/active_record/attribute_methods/read.rb +++ b/activerecord/lib/active_record/attribute_methods/read.rb @@ -54,7 +54,7 @@ def read_attribute(attr_name, &block) attr_name.to_s end - name = self.class.primary_key if name == "id".freeze + name = self.class.primary_key if name == "id".freeze && self.class.primary_key _read_attribute(name, &block) end diff --git a/activerecord/test/cases/primary_keys_test.rb b/activerecord/test/cases/primary_keys_test.rb index f92ee15cfaeccfcc58cd4a416aabb340ce2beea4..1baf7c4902d1a359a8ab9ccac460e036626f57cc 100644 --- a/activerecord/test/cases/primary_keys_test.rb +++ b/activerecord/test/cases/primary_keys_test.rb @@ -7,6 +7,7 @@ require "models/keyboard" require "models/mixed_case_monkey" require "models/dashboard" +require "models/non_primary_key" class PrimaryKeysTest < ActiveRecord::TestCase fixtures :topics, :subscribers, :movies, :mixed_case_monkeys @@ -89,6 +90,12 @@ def test_string_key assert_equal("John Doe", subscriberReloaded.name) end + def test_id_column_that_is_not_primary_key + NonPrimaryKey.create!(id: 100) + actual = NonPrimaryKey.find_by(id: 100) + assert_match %r{