Permalink
Browse files

Freeze association foreign keys to reduce allocations

The string returned here will ultimately get used as a key of a hash in
the attribute set once the attributes are being built. When you give a
non-frozen string to `Hash#[]`, it will be duped. Be freezing we can
significantly reduce the number of times we end up allocating
`"user_id"`

This does not include any additional tests, as this should not have any
public facing implications. If you are mutating the result of
`Reflection#foreign_key`, please stop.
  • Loading branch information...
sgrif committed Nov 15, 2015
1 parent 153d7ca commit e38e0c61e9d73b3531a02c6dd44c9694f64f2c0a
Showing with 1 addition and 1 deletion.
  1. +1 −1 activerecord/lib/active_record/reflection.rb
@@ -371,7 +371,7 @@ def join_table
end
def foreign_key
@foreign_key ||= options[:foreign_key] || derive_foreign_key
@foreign_key ||= options[:foreign_key] || derive_foreign_key.freeze
end
def association_foreign_key

0 comments on commit e38e0c6

Please sign in to comment.