method
make_constraints
v7.0.0 -
Show latest stable
-
0 notes -
Class: JoinDependency
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 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?
make_constraints(parent, child, join_type)
private
Hide source
# File activerecord/lib/active_record/associations/join_dependency.rb, line 190 def make_constraints(parent, child, join_type) foreign_table = parent.table foreign_klass = parent.base_klass child.join_constraints(foreign_table, foreign_klass, join_type, alias_tracker) do |reflection| table, terminated = @joined_tables[reflection] root = reflection == child.reflection if table && (!root || !terminated) @joined_tables[reflection] = [table, root] if root next table, true end table_name = @references[reflection.name.to_sym]&.to_s table = alias_tracker.aliased_table_for(reflection.klass.arel_table, table_name) do name = reflection.alias_candidate(parent.table_name) root ? name : "#{name}_join" end @joined_tables[reflection] ||= [table, root] if join_type == Arel::Nodes::OuterJoin table end.concat child.children.flat_map { |c| make_constraints(child, c, join_type) } end