Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
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}, > > ] } >
This paste will be private.
From the Design Piracy series on my blog: