method
construct
rails 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
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