method
build_joins
v6.0.0 -
Show latest stable
-
0 notes -
Class: ActiveRecord::QueryMethods
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (0)
- 3.1.0 (0)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (0)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
build_joins(manager, joins, aliases)
private
Hide source
# File activerecord/lib/active_record/relation/query_methods.rb, line 1103 def build_joins(manager, joins, aliases) buckets = Hash.new { |h, k| h[k] = [] } unless left_outer_joins_values.empty? left_joins = valid_association_list(left_outer_joins_values.flatten) buckets[:stashed_join] << construct_join_dependency(left_joins, Arel::Nodes::OuterJoin) end joins.map! do |join| if join.is_a?(String) table.create_string_join(Arel.sql(join.strip)) unless join.blank? else join end end.delete_if(&:blank?).uniq! while joins.first.is_a?(Arel::Nodes::Join) join_node = joins.shift if join_node.is_a?(Arel::Nodes::StringJoin) && !buckets[:stashed_join].empty? buckets[:join_node] << join_node else buckets[:leading_join] << join_node end end joins.each do |join| case join when Hash, Symbol, Array buckets[:association_join] << join when ActiveRecord::Associations::JoinDependency buckets[:stashed_join] << join when Arel::Nodes::Join buckets[:join_node] << join else raise "unknown class: %s" % join.class.name end end build_join_query(manager, buckets, Arel::Nodes::InnerJoin, aliases) end