class ActiveRecord::Associations::ClassMethods::JoinDependency::JoinBase

:nodoc:

def aliased_prefix

def aliased_prefix
  "t0"
end

def aliased_primary_key

def aliased_primary_key
  "#{aliased_prefix}_r0"
end

def aliased_table_name

def aliased_table_name
  active_record.table_name
end

def column_names_with_alias

def column_names_with_alias
  unless defined?(@column_names_with_alias)
    @column_names_with_alias = []
    ([primary_key] + (column_names - [primary_key])).each_with_index do |column_name, i|
      @column_names_with_alias << [column_name, "#{aliased_prefix}_r#{i}"]
    end
  end
  @column_names_with_alias
end

def extract_record(row)

def extract_record(row)
  column_names_with_alias.inject({}){|record, (cn, an)| record[cn] = row[an]; record}
end

def initialize(active_record, joins = nil)

def initialize(active_record, joins = nil)
  @active_record = active_record
  @cached_record = {}
  @table_joins   = joins
end

def instantiate(row)

def instantiate(row)
  @cached_record[record_id(row)] ||= active_record.send(:instantiate, extract_record(row))
end

def record_id(row)

def record_id(row)
  row[aliased_primary_key]
end