slight change to eager associations table aliasing: use class_reflection, like 'post_comments' or 'tree_children'

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3788 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Rick Olson
2006-03-06 04:47:58 +00:00
parent 5a7722de98
commit c58dff1c9c
2 changed files with 3 additions and 3 deletions

View File

@@ -3,9 +3,9 @@
* Added smarter table aliasing for eager associations for multiple self joins #3580 [Rick Olson]
* The first time a table is referenced in a join, no alias is used.
* After that, the parent table name and the reflection name are used.
* After that, the parent class name and the reflection name are used.
Tree.find(:all, :include => :children) # LEFT OUTER JOIN trees AS tress_children ...
Tree.find(:all, :include => :children) # LEFT OUTER JOIN trees AS tree_children ...
* Any additional join references get a numerical suffix like '_2', '_3', etc.

View File

@@ -1197,7 +1197,7 @@ module ActiveRecord
unless join_dependency.table_aliases[aliased_table_name].zero?
# if the table name has been used, then use an alias
# if the alias has been used, add a '_n' suffix to the end.
@aliased_table_name = "#{parent.table_name}_#{reflection.name}_#{join_dependency.table_aliases[aliased_table_name]}".gsub(/_1$/, '')
@aliased_table_name = "#{parent.active_record.to_s.underscore}_#{reflection.name}_#{join_dependency.table_aliases[aliased_table_name]}".gsub(/_1$/, '')
end
join_dependency.table_aliases[aliased_table_name] += 1
end