construct(ar_parent, parent, row, rs, seen, model_cache, aliases) 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 248
      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.base_klass][id]

          if model
            construct(model, node, row, rs, seen, model_cache, aliases)
          else
            model = construct_model(ar_parent, node, row, model_cache, id, aliases)
            model.readonly!
            seen[ar_parent.object_id][node.base_klass][id] = model
            construct(model, node, row, rs, seen, model_cache, aliases)
          end
        end
      end
Register or log in to add new notes.