method

construct

Importance_0
construct(ar_parent, parent, row, seen, model_cache, strict_loading_value) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/associations/join_dependency.rb, line 238
        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
Register or log in to add new notes.