method
construct
v7.0.0 -
Show latest stable
- Class:
ActiveRecord::Associations::JoinDependency
construct(ar_parent, parent, row, seen, model_cache, strict_loading_value)private
No documentation available.
# 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
key = aliases.column_alias(node, node.primary_key)
id = row[key]
if id.nil?
nil_association = ar_parent.association(node.reflection.name)
nil_association.loaded!
next
end
model = seen[ar_parent][node][id]
if model
construct(model, node, row, seen, model_cache, strict_loading_value)
else
model = construct_model(ar_parent, node, row, model_cache, id, strict_loading_value)
seen[ar_parent][node][id] = model
construct(model, node, row, seen, model_cache, strict_loading_value)
end
end
end