Rails Разработка пользователей с несколькими типами - возможно, STI? - PullRequest
0 голосов
/ 06 января 2012

У меня есть приложение, в котором есть пользователи, которыми управляет Devise. Реальные пользователи приложения будут добавлять людей как «друзей» и еще один тип, давайте будем называть их «работниками». «Друзья» и «работники», или я хотел бы, чтобы они были, все типа Пользователь, в конце дня.

Подвох в том, что пользователю необходимо иметь в системе одного человека (пользователя), который является для них как «другом», так и «работником». Также существует необходимость в недопущении дублирования пользователей по их уникальным идентификаторам, которые в этом случае будут номерами мобильных телефонов. Если данный пользователь добавляет другого пользователя в качестве «друга», а затем, например, добавляет его в качестве «рабочего», это должно быть просто какое-то объединение, а не новый пользователь в системе.

Я знаю, как бы я справился с этим в традиционном смысле, но я уверен, что есть какой-то умный способ с ИППП или полиморфными ассоциациями справиться с этим в рельсах.

Есть мысли? Стоит отметить, что у разных типов пользователей есть практически идентичные поля (или воля), связанные с ними - довольно простой идентификатор, имя, номер мобильного телефона и т. Д.

Я предполагаю, что хитрость заключается в том, что любой из пользователей должен иметь возможность иметь один или оба типа «друг» или «работник», и каждый из этих типов должен иметь возможность сочетания других два связаны с ними.

1 Ответ

1 голос
/ 06 января 2012

Мне кажется, что кто-то друг или работник должен быть атрибутом модели соединения двух людей, а не атрибутом любого из них.

Таким образом, человек может быть другом одного человека и работником другого человека.

...