method
construct
v5.2.3 -
Show latest stable
- Class:
ActiveRecord::Associations::JoinDependency
construct(ar_parent, parent, row, rs, seen, model_cache, aliases)private
No documentation available.
# File activerecord/lib/active_record/associations/join_dependency.rb, line 205
def construct(ar_parent, parent, row, rs, seen, model_cache, aliases)
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, rs, seen, model_cache, aliases)
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.object_id][node][id]
if model
construct(model, node, row, rs, seen, model_cache, aliases)
else
model = construct_model(ar_parent, node, row, model_cache, id, aliases)
if node.reflection.scope &&
node.reflection.scope_for(node.base_klass.unscoped).readonly_value
model.readonly!
end
seen[ar_parent.object_id][node][id] = model
construct(model, node, row, rs, seen, model_cache, aliases)
end
end
end