HABTM using two columns

Hi all,

I was wondering whether anyone could guide me to docu and code examples how to create and use a has_and_belongs_to_many relationship with a joining table where TWO columns are used to identify the relation to TWO alternative tables.

Example: table 1: mothers [mother_id, name] table 2: fathers [father_id, name] table 3: children [child_id, name] joining table 4: children_parent [child_id, parent_id, parent_type]

'parent type' can be either 'mother' or 'father', and depending on this, the 'parent_id' links to an entry in either the father or mother table. How do you define this in Rails and how do you query it when showing the child data?

  Thanks for any suggestions,      Flexer.

Before you get too far, I'd reconsider the models you're using...

Mothers, Fathers, and Children are all people, and ideally a Person is in your database just once (the person who is a child can also be a father, etc).

What makes a Person a Mother, or Father (or grandmother, grandfather, etc) is just a relationship between that Person and another.

Factor the relationships out into something like:

Relation   person_1   relation_type   person_2 where "person_1" is the "relation_type" of "person_2"

and you can start supporting Mother, Father, Sister, Brother, Friend, Enemy, etc, etc.

Sounds like you want Polymorphic Associations: see http://wiki.rubyonrails.org/rails/pages/HowToUsePolymorphicAssociations