On Nov 7, 2011, at 10:40 AM, [email protected] wrote:
> I've been following [this tutorial][1] to try and get things working
> but still cannot get it sorted.
> 
> Relationships are as follows:
> 
> Radcheck have and belong to many Groups through Radusergroup
> Groups have and belong to many Radcheck through Radusergroup
> 
> I have this in my models:
> 
>    class Radcheck
>      include DataMapper::Resource
> 
>      has n, :radgroups, :model => 'Group', :child_key =>
> [:groupname], :parent_key => [:username], :through => :radusergroup
> 
>    end

The relationship to be traversed has to be defined before defining the 
`:through` relationship. In other words:

``` ruby
  class Radcheck
    include DataMapper::Resource

    property :id, Serial
    property :name, String

    has n, :radusergroups, :child_key => [:username], :parent_key => [:name]
    has n, :radgroups, :through => :radusergroups
  end

  class Group
    include DataMapper::Resource

    property :id, Serial
    property :name, String

    has n, :radusergroups, :child_key => [:groupname], :parent_key => [:name]
    has n, :radusers, :through => :radusergroups, :model => 'Radcheck'
  end

  class Radusergroup
    include DataMapper::Resource

    belongs_to :radusers, :model => 'Radcheck', :child_key => [:username], 
:parent_key => [:name]
    belongs_to :radgroups, :model => 'Group', :child_key => [:groupname], 
:parent_key => [:name]
  end
```

The `property` declarations in `Radcheck` and `Group` are, of course, at your 
discretion, but you will need to specify the key mapping in the relationship 
definitions (though not in the :through relationship definitions, since 
:through relationships reflect on the existing relationships that they 
traverse).

Hope that helps,
Emmanuel

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en.

Reply via email to