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

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
def foreign_key
@foreign_key ||= options[:foreign_key] || derive_foreign_key
@foreign_key ||= options[:foreign_key] || derive_foreign_key.freeze
def association_foreign_key

0 comments on commit e38e0c6

Please sign in to comment.