提交 88bc49f2 编写于 作者: A Aaron Patterson

dealing with an AST manager, not a relation, so fix the variable names

上级 3d01ef6d
...@@ -163,7 +163,7 @@ def arel ...@@ -163,7 +163,7 @@ def arel
end end
def build_arel def build_arel
arel = table arel = table.from table
arel = build_joins(arel, @joins_values) unless @joins_values.empty? arel = build_joins(arel, @joins_values) unless @joins_values.empty?
...@@ -247,7 +247,7 @@ def build_where(opts, other = []) ...@@ -247,7 +247,7 @@ def build_where(opts, other = [])
end end
end end
def build_joins(relation, joins) def build_joins(manager, joins)
joins = joins.map {|j| j.respond_to?(:strip) ? j.strip : j}.uniq joins = joins.map {|j| j.respond_to?(:strip) ? j.strip : j}.uniq
association_joins = joins.find_all do |join| association_joins = joins.find_all do |join|
...@@ -257,7 +257,7 @@ def build_joins(relation, joins) ...@@ -257,7 +257,7 @@ def build_joins(relation, joins)
stashed_association_joins = joins.grep(ActiveRecord::Associations::ClassMethods::JoinDependency::JoinAssociation) stashed_association_joins = joins.grep(ActiveRecord::Associations::ClassMethods::JoinDependency::JoinAssociation)
non_association_joins = (joins - association_joins - stashed_association_joins) non_association_joins = (joins - association_joins - stashed_association_joins)
join_ast = custom_join_ast(relation, non_association_joins) join_ast = custom_join_ast(manager.froms.first, non_association_joins)
join_dependency = ActiveRecord::Associations::ClassMethods::JoinDependency.new(@klass, association_joins, join_ast) join_dependency = ActiveRecord::Associations::ClassMethods::JoinDependency.new(@klass, association_joins, join_ast)
...@@ -267,19 +267,19 @@ def build_joins(relation, joins) ...@@ -267,19 +267,19 @@ def build_joins(relation, joins)
# FIXME: refactor this to build an AST # FIXME: refactor this to build an AST
join_dependency.join_associations.each do |association| join_dependency.join_associations.each do |association|
relation = association.join_to(relation) manager = association.join_to(manager)
end end
if Arel::Table === relation if Arel::Table === manager
relation.from(join_ast || relation) manager.from(join_ast || manager)
else else
if relation.froms.length > 0 && join_ast if manager.froms.length > 0 && join_ast
join_ast.left = relation.froms.first join_ast.left = manager.froms.first
relation.from join_ast manager.from join_ast
elsif relation.froms.length == 0 && join_ast elsif manager.froms.length == 0 && join_ast
relation.from(join_ast) manager.from(join_ast)
else else
relation manager
end end
end end
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册