我正在尝试设置一个应用程序,其中包含可以由用户或现有组组成的组。
例子:
- 用户Andy、Bob、Charlie和David属于1st forwarders组。
- 用户Eddy、Frank、George、Howard、Iggy和Jack在1st midfielders组中。
- 用户Kenny、Lenny、Max、Ned、Oscar、Peter和Quin位于第一防守组。
- 用户Rita是1st 守门员组中的唯一用户。
- 用户Andy、Bob、Eddy、Frank和Kenny也属于alpha 篮球运动员组。
- 第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
回应。
我的模型和课程设置是否正确?
如果没有,我做错了什么?
如果是这样,我如何拉孩子的信息?
或者我是否错误地处理了这个问题,如果是这样,我应该如何处理它?