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 251
        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)

              if node.reflection.scope_for(node.base_klass).readonly_value
                model.readonly!
              end

              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.