diff options
| -rw-r--r-- | activerecord/lib/active_record/associations/join_dependency/join_part.rb | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/activerecord/lib/active_record/associations/join_dependency/join_part.rb b/activerecord/lib/active_record/associations/join_dependency/join_part.rb index b534569063..f70e277c76 100644 --- a/activerecord/lib/active_record/associations/join_dependency/join_part.rb +++ b/activerecord/lib/active_record/associations/join_dependency/join_part.rb @@ -62,7 +62,19 @@ module ActiveRecord          end          def extract_record(row) -          Hash[column_names_with_alias.map{|cn, an| [cn, row[an]]}] +          # This code is performance critical as it is called per row. +          # see: https://github.com/rails/rails/pull/12185 +          hash = {} + +          index = 0 +          length = column_names_with_alias.length +          while index < length +            column_name,alias_name = column_names_with_alias[index] +            hash[column_name] = row[alias_name] +            index += 1 +          end + +          hash          end          def record_id(row) | 
