Report abuse

This is the output of calling inspect on a datamapper many_to_many relationship object for the following scenario:

Person.has(n, :projects, :through => :project_memberships)

Below is inspect's output for the :projects relationship


#<DataMapper::Associations::ManyToMany::Relationship:0x1625330 
  @name=:projects,
  @instance_variable_name="@projects",
  @min=0
  @max=Infinity,
  @parent_repository_name=:default, 
  @parent_model=Person, 
  @parent_properties=nil, 
  @child_repository_name=:default, 
  @child_model=Project, 
  @child_model_name="Project", 
  @child_key=[#<DataMapper::Property @model=Project @name=:id>], 
  @child_properties=nil, 
  @constraint=:protect, 
  @query={}, 
  @links=[
    #<DataMapper::Associations::OneToMany::Relationship:0x16270f4 
      @name=:project_memberships, 
      @instance_variable_name="@project_memberships", 
      @min=0
      @max=Infinity, 
      @parent_repository_name=:default, 
      @parent_model=Person, 
      @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
      @parent_properties=nil, 
      @child_repository_name=:default, 
      @child_model=ProjectMembership, 
      @child_model_name="ProjectMembership", 
      @child_properties=nil, 
      @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
      @query={}, 
      @constraint=:destroy, 
      @options={ :parent_repository_name=>:default, :constraint=>:destroy, :min=>0, :max=>Infinity, :child_repository_name=>nil }, 
      @inverse=#<DataMapper::Associations::ManyToOne::Relationship:0x15ef654 
        @name=:person, 
        @instance_variable_name="@person", 
        @min=1, 
        @max=1, 
        @parent_repository_name=:default, 
        @parent_model=Person, 
        @parent_model_name="Person"
        @parent_properties=nil, 
        @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
        @child_repository_name=:default, 
        @child_model=ProjectMembership, 
        @child_properties=nil, 
        @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
        @query={}, 
        @nullable=false, 
        @options={:parent_repository_name=>nil, :min=>1, :max=>1, :child_repository_name=>:default}, 
        @inverse=#<DataMapper::Associations::OneToMany::Relationship:0x16270f4 ...>, 
      >
    >, 
    #<DataMapper::Associations::ManyToOne::Relationship:0x15edae8 
      @name=:project, 
      @instance_variable_name="@project", 
      @min=1, 
      @max=1, 
      @parent_repository_name=:default, 
      @parent_model=Project, 
      @parent_model_name="Project"
      @parent_properties=nil, 
      @parent_key=[#<DataMapper::Property @model=Project @name=:id>], 
      @child_repository_name=:default, 
      @child_model=ProjectMembership, 
      @child_properties=nil, 
      @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:project_id>], 
      @query={}, 
      @nullable=false, 
      @options={:parent_repository_name=>nil, :min=>1, :max=>1, :child_repository_name=>:default}, 
      @inverse=#<DataMapper::Associations::OneToMany::Relationship:0x16027cc 
        @name=:project_memberships, 
        @instance_variable_name="@project_memberships", 
        @min=0
        @max=Infinity, 
        @parent_repository_name=:default, 
        @parent_model=Project, 
        @parent_properties=nil, 
        @parent_key=[#<DataMapper::Property @model=Project @name=:id>], 
        @child_repository_name=:default, 
        @child_model=ProjectMembership, 
        @child_model_name="ProjectMembership", 
        @child_properties=nil, 
        @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:project_id>], 
        @query={}, 
        @constraint=:destroy, 
        @options={:parent_repository_name=>:default, :constraint=>:destroy, :min=>0, :max=>Infinity, :child_repository_name=>nil}, 
      >
    >
  ], 
  @options={
    :min=>0, 
    :max=>Infinity, 
    :parent_repository_name=>:default, 
    :child_repository_name=>nil, 
    :through=>#<DataMapper::Associations::OneToMany::Relationship:0x16270f4 
      @name=:project_memberships, 
      @instance_variable_name="@project_memberships", 
      @min=0
      @max=Infinity, 
      @parent_repository_name=:default, 
      @parent_model=Person, 
      @parent_properties=nil, 
      @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
      @child_repository_name=:default, 
      @child_model=ProjectMembership, 
      @child_model_name="ProjectMembership", 
      @child_properties=nil, 
      @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
      @constraint=:destroy, 
      @query={}, 
      @options={:parent_repository_name=>:default, :constraint=>:destroy, :min=>0, :max=>Infinity, :child_repository_name=>nil}, 
      @inverse=#<DataMapper::Associations::ManyToOne::Relationship:0x15ef654 
        @name=:person, 
        @instance_variable_name="@person", 
        @min=1, 
        @max=1, 
        @parent_repository_name=:default, 
        @parent_model=Person, 
        @parent_model_name="Person"
        @parent_properties=nil, 
        @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
        @child_repository_name=:default, 
        @child_model=ProjectMembership, 
        @child_properties=nil, 
        @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
        @nullable=false, 
        @query={}, 
        @options={:parent_repository_name=>nil, :min=>1, :max=>1, :child_repository_name=>:default}, 
        @inverse=#<DataMapper::Associations::OneToMany::Relationship:0x16270f4 ...>, 
      >
    >
  }, 
  @through=#<DataMapper::Associations::OneToMany::Relationship:0x16270f4 
    @name=:project_memberships, 
    @instance_variable_name="@project_memberships", 
    @min=0
    @max=Infinity, 
    @parent_repository_name=:default, 
    @parent_model=Person, 
    @parent_properties=nil, 
    @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
    @child_repository_name=:default,
    @child_model=ProjectMembership, 
    @child_model_name="ProjectMembership", 
    @child_properties=nil, 
    @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
    @constraint=:destroy, 
    @query={}, 
    @options={:parent_repository_name=>:default, :constraint=>:destroy, :min=>0, :max=>Infinity, :child_repository_name=>nil}, 
    @inverse=#<DataMapper::Associations::ManyToOne::Relationship:0x15ef654 
      @name=:person, 
      @instance_variable_name="@person", 
      @min=1, 
      @max=1, 
      @parent_repository_name=:default, 
      @parent_model=Person, 
      @parent_model_name="Person"
      @parent_properties=nil, 
      @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
      @child_repository_name=:default, 
      @child_model=ProjectMembership, 
      @child_properties=nil, 
      @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
      @nullable=false, 
      @query={}, 
      @options={:parent_repository_name=>nil, :min=>1, :max=>1, :child_repository_name=>:default}, 
      @inverse=#<DataMapper::Associations::OneToMany::Relationship:0x16270f4 ...>, 
    >
  >, 
  @many_to_many_query={
    :links=>[
      #<DataMapper::Associations::OneToMany::Relationship:0x16270f4 
        @name=:project_memberships, 
        @instance_variable_name="@project_memberships", 
        @min=0
        @max=Infinity, 
        @parent_repository_name=:default, 
        @parent_model=Person, 
        @parent_properties=nil, 
        @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
        @child_repository_name=:default, 
        @child_model=ProjectMembership, 
        @child_model_name="ProjectMembership", 
        @child_properties=nil, 
        @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
        @constraint=:destroy, 
        @query={}, 
        @options={:parent_repository_name=>:default, :constraint=>:destroy, :min=>0, :max=>Infinity, :child_repository_name=>nil}, 
        @inverse=#<DataMapper::Associations::ManyToOne::Relationship:0x15ef654 
          @name=:person, 
          @instance_variable_name="@person", 
          @min=1, 
          @max=1, 
          @parent_repository_name=:default, 
          @parent_model=Person, 
          @parent_model_name="Person"
          @parent_properties=nil, 
          @parent_key=[#<DataMapper::Property @model=Person @name=:id>], 
          @child_repository_name=:default, 
          @child_model=ProjectMembership, 
          @child_properties=nil, 
          @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:person_id>], 
          @nullable=false, 
          @query={}, 
          @options={:parent_repository_name=>nil, :min=>1, :max=>1, :child_repository_name=>:default}, 
          @inverse=#<DataMapper::Associations::OneToMany::Relationship:0x16270f4 ...>, 
        >
      >, 
      #<DataMapper::Associations::ManyToOne::Relationship:0x15edae8 
        @name=:project, 
        @instance_variable_name="@project", 
        @min=1, 
        @max=1, 
        @parent_repository_name=:default, 
        @parent_model=Project, 
        @parent_model_name="Project"
        @parent_properties=nil, 
        @parent_key=[#<DataMapper::Property @model=Project @name=:id>], 
        @child_repository_name=:default, 
        @child_model=ProjectMembership, 
        @child_properties=nil, 
        @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:project_id>], 
        @nullable=false, 
        @query={}, 
        @options={:parent_repository_name=>nil, :min=>1, :max=>1, :child_repository_name=>:default}, 
        @inverse=#<DataMapper::Associations::OneToMany::Relationship:0x16027cc 
          @name=:project_memberships, 
          @instance_variable_name="@project_memberships", 
          @min=0
          @max=Infinity, 
          @parent_repository_name=:default, 
          @parent_model=Project, 
          @parent_properties=nil, 
          @parent_key=[#<DataMapper::Property @model=Project @name=:id>], 
          @child_repository_name=:default, 
          @child_model=ProjectMembership, 
          @child_model_name="ProjectMembership", 
          @child_properties=nil, 
          @child_key=[#<DataMapper::Property @model=ProjectMembership @name=:project_id>], 
          @constraint=:destroy, 
          @query={}, 
          @options={:parent_repository_name=>:default, :constraint=>:destroy, :min=>0, :max=>Infinity, :child_repository_name=>nil}, 
        >
      >
    ]
  }
>