diff --git a/lib/freedom_patches/join_dependency.rb b/lib/freedom_patches/join_dependency.rb new file mode 100644 index 00000000000..a88d575bb9c --- /dev/null +++ b/lib/freedom_patches/join_dependency.rb @@ -0,0 +1,22 @@ +# see PR: https://github.com/rails/rails/pull/12185 +# +class ActiveRecord::Associations::JoinDependency::JoinPart + + def extract_record(row) + # Used to be: Hash[column_names_with_alias.map{|cn, an| [cn, row[an]]}] + # that is fairly inefficient cause all the values are first copied + # in to an array only to construct the Hash + # This code is performance critical as it is called per row. + hash = {} + + index = 0 + while index < column_names_with_alias.length do + cn,an = column_names_with_alias[index] + hash[cn] = row[an] + index += 1 + end + + hash + end +end +