def map_table_alias_for( path )
return "table alias for #{path.inspect} already exists" unless table_aliases[path].nil?
reflection = reflection_for( path )
table_alias = reflection.table_name
if table_aliases.values.include?( table_alias )
max_length = reflection.active_record.connection.table_alias_length
table_alias = "#{reflection.name.to_s.pluralize}_#{reflection.active_record.table_name}".to(max_length-1)
end
while table_aliases.values.include?( table_alias )
if table_alias =~ /\w(_\d+?)$/
table_index = $1.succ
table_alias = "#{table_alias[0..-(table_index.length+1)]}_#{table_index}"
else
table_alias = "#{table_alias[0..(max_length-3)]}_2"
end
end
table_aliases[path] = table_alias
end