Hi,
I’m planning an application with a bunch of models which can be linked
to each other. Since a few days I’m thinking about the right way to go,
to implement these model associations. First thought was, I should use
polymorphic associations, but I think it’s not enough for my case. I
came up with the idea of an explicit link model which would look like
this:
LinkModel
| source_id | source_type | target_id |target_type |
There’re a few problems with this kind of association:
Every model can be a source OR a target. Let’s say I want to get every
company which is linked to a specific person (id=42), I have to do two
queries to get the ids for all companies linked to a person.
SELECT target_id FROM link_model WHERE source_type = ‘person’ AND
source_id = ‘42’ AND target_type = ‘company’
SELECT source_id FROM link_model WHERE target_type = ‘person’ AND
target_id = ‘42’ AND source_type = ‘company’
How do I implement this in Rails? This looks a bit like a
Two-Side-Polymorphic-Association. Is this possible? Or are there any
other ideas how to do this kind of association?
tisp