Как смоделировать семейные отношения в рельсах 3? - PullRequest
0 голосов
/ 30 мая 2011

Я работаю над базой данных контактов в рельсах 3 ..

Одна вещь, которая действительно расстраивает, это то, насколько уродлив код семейных отношений ..

Есть ли чистый способ сделатьэто в рельсах?

В основном все контакты принадлежат к классу контактов (иди!имеет один тип семейных отношений (другая модель)

До сих пор я реализовал это, используя методы здесь http://railscasts.com/episodes/163-self-referential-association (используя обратные отношения и т. д.)

Но это просто нечувствую себя очень чистым ... и если я хочу получить все контакты, родственников, отношений и т. д., мне нужно перейти на сырой SQL или присоединиться к массивам.

Есть ли лучший (или точный) способ, которым эточто за рельсы делают?

1 Ответ

4 голосов
/ 30 мая 2011

Gem Ancestry , кажется, решает именно эту проблему:

Ancestry - это гем / плагин, который позволяет записям модели Ruby on Rails ActiveRecord бытьорганизован в виде древовидной структуры (или иерархии).Он использует один, интуитивно отформатированный столбец базы данных, используя вариацию материализованного шаблона пути.Он предоставляет все стандартные отношения древовидной структуры (предки, родитель, корень, дети, братья и сестры, потомки), и все они могут быть получены в одном SQL-запросе.Дополнительные функции: поддержка STI, области действия, кэширование глубины, ограничения глубины, легкая миграция из старых плагинов / гемов, проверка целостности, восстановление целостности, размещение (под) дерева в хешах и различные стратегии для работы с потерянными записями.

...