method
construct
v7.1.3.4 -
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 (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?
construct(ar_parent, parent, row, seen, model_cache, strict_loading_value)
private
Hide source
# File activerecord/lib/active_record/associations/join_dependency.rb, line 242 def construct(ar_parent, parent, row, seen, model_cache, strict_loading_value) return if ar_parent.nil? parent.children.each do |node| if node.reflection.collection? other = ar_parent.association(node.reflection.name) other.loaded! elsif ar_parent.association_cached?(node.reflection.name) model = ar_parent.association(node.reflection.name).target construct(model, node, row, seen, model_cache, strict_loading_value) next end if node.primary_key keys = Array(node.primary_key).map { |column| aliases.column_alias(node, column) } ids = keys.map { |key| row[key] } else keys = Array(node.reflection.join_primary_key).map { |column| aliases.column_alias(node, column.to_s) } ids = keys.map { nil } # Avoid id-based model caching. end if keys.any? { |key| row[key].nil? } nil_association = ar_parent.association(node.reflection.name) nil_association.loaded! next end ids.each do |id| unless model = seen[ar_parent][node][id] model = construct_model(ar_parent, node, row, model_cache, id, strict_loading_value) seen[ar_parent][node][id] = model if id end end construct(model, node, row, seen, model_cache, strict_loading_value) end end