diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2016-05-31 11:35:46 -0400 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2016-05-31 11:38:10 -0400 |
commit | c8be4574a2a35c896560ff58b26111ad6dd9d60f (patch) | |
tree | 86cb1cab0a6f4bf2b4e49bf28aec76340634aa86 /activerecord/lib/active_record | |
parent | 81251c6d99eda71d8c8d748cfd3710242aece142 (diff) | |
download | rails-c8be4574a2a35c896560ff58b26111ad6dd9d60f.tar.gz rails-c8be4574a2a35c896560ff58b26111ad6dd9d60f.tar.bz2 rails-c8be4574a2a35c896560ff58b26111ad6dd9d60f.zip |
`ActiveRecord::Base#hash` should differ between classes
Prior to this change, we would get collisions if Active Record objects
of different classes with the same ID were used as keys of the same
hash. It bothers me slightly that we have to allocate inside of this
method, but Ruby doesn't provide any way to hash multiple values without
allocation
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/core.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index f936e865e4..d45ca9b24b 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -432,7 +432,7 @@ module ActiveRecord # [ Person.find(1), Person.find(2), Person.find(3) ] & [ Person.find(1), Person.find(4) ] # => [ Person.find(1) ] def hash if id - id.hash + [self.class, id].hash else super end |