двунаправленное соединение habtm - PullRequest
0 голосов
/ 29 апреля 2010

У меня есть приложение с 2 группами моделей - на основе контента (новости, вопросы) и на основе «чего-то» (устройства, приложения и т. Д.). Мне нужно связать все модели между группами - например, вопрос может принадлежать 3 разным вещам - одному приложению и двум устройствам. То же самое - для новостей. С другой стороны - мне нужно увидеть все новостные статьи и вопросы, связанные с каким-либо приложением или устройством.

Есть идеи, как развить это в рельсах? У меня есть только одна идея - миксины, которые добавят методы content_id и thing_id к моделям и объединят таблицу.

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

Вы можете использовать thing_id, thing_class, content_id, content_class только в таблице соединений и выполнять поиск с условиями, habtm будет невозможным. «2,« Разработать »,« Страница », 2» «2,« Придумай »,« Реклама », 4» "2, 'AnotherThing', 'Page', 2"

И затем получить все страницы для вещи из таблицы соединений, где id = self.id AND thing_class = self.class.name AND contant_class = Page.class.name

Если вам нужно использовать ассоциацию habtm, вы можете использовать ассоциацию STI + 1: 1, но это еще больше испортит ситуацию

0 голосов
/ 25 мая 2010

Решено с помощью плагина has_many_polymorphs - http://github.com/fauna/has_many_polymorphs

...