Я пытаюсь настроить приложение, которое включает в себя группы, которые могут состоять из пользователей или существующих групп.
Примеры:
- Пользователи Энди , Боб , Чарли и Дэвид входят в группу 1-й форвардер .
- Пользователи Эдди , Фрэнк , Джордж , Ховард , Игги и Джек находятся в группе 1-го полузащитника .
- Пользователи Кенни , Ленни , Макс , Нед , Оскар , Питер и Куин входят в группу 1-го защитника .
- Пользователь Рита - единственный пользователь в группе 1-й вратарь .
- Пользователи Энди , Боб , Эдди , Фрэнк и Кенни также входят в альфа-баскетболисты группа.
- Группы 1-й форвардер , 1-й полузащитник , 1-й защитник и 1-й вратарь в составе 1-й футболист группа.
- Группы 1-й форвардер , 2-й полузащитник , 3-й защитник и 4-й вратарь входят в состав футболистов всех звезд группа.
Насколько я понимаю, для этого потребуется полиморфный, самоссылочный набор моделей.
Исходя из этого понимания, у меня есть три модели и соответствующие классы:
Пользователи
- id: целое число
- имя: строка
- плюс другие персональные данные
class User < ActiveRecord::Base
has_many :memberships, :as => :child
has_many :groups, :through => :memberships
end
Группы
- id: целое число
- имя: строка
- плюс другие групповые данные
class Group < ActiveRecord::Base
# parental membership role
has_many :memberships
has_many :users, :through => :memberships
# child membership role
has_many :memberships, :as => :child
end
Членство
- child_id: целое число
- group_id: целое число
- тип-членства: строка
- плюс другие данные о членстве
class Membership < ActiveRecord::Base
belongs_to :child, :polymorphic => true
belongs_to :group
end
Когда я пытаюсь получить доступ к ребенку через что-то вроде Membership.first.child
, я всегда получаю => nil
ответ.
Правильно ли настроены мои модели и классы?
Если нет, то что я сделал неправильно?
Если да, то как мне получить информацию о ребенке?
Или я неправильно подхожу к этому, и если да, то как мне подойти к нему?