ユーザーまたは既存のグループで構成できるグループを含むアプリケーションをセットアップしようとしています。
例:
- ユーザーAndy、Bob、Charlie、およびDavidは、1 番目のフォワーダーグループに属しています。
- ユーザーEddy、Frank、George、Howard、Iggy、およびJackは、第 1 ミッドフィールダーグループに属しています。
- ユーザーKenny、Lenny、Max、Ned、Oscar、Peter、およびQuinは、1 番目の防御者グループに属しています。
- ユーザーRitaは、第 1 ゴールキーパーグループの唯一のユーザーです。
- ユーザーAndy、Bob、Eddy、Frank、およびKennyもalpha バスケットボールグループに属しています。
- グループ1 番目のフォワーダー、1 番目のミッドフィールダー、1 番目のディフェンダー、および1 番目のゴールキーパーは、1 番目のフットボーラーグループに属します。
- グループ1 番目のフォワーダー、2 番目のミッドフィールダー、3 番目のディフェンダー、4 番目のゴールキーパーは、オールスター フットボールグループに属します。
私が理解しているように、これには多態的で自己参照的なモデルのセットが必要です。
この理解に基づいて、私が現在持っている 3 つのモデルと対応するクラスは次のとおりです。
ユーザー
- 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: 整数- members_type:
文字列
- その他のメンバーシップ固有のデータ
class Membership < ActiveRecord::Base
belongs_to :child, :polymorphic => true
belongs_to :group
end
のような方法で子にアクセスしようとすると、Membership.first.child
常に=> nil
応答が返されます。
モデルとクラスが正しく設定されていますか?
そうでない場合、私は何を間違って行いましたか?
その場合、子供の情報を取得するにはどうすればよいですか?
または、これに間違ってアプローチしていますか?もしそうなら、どのようにアプローチすればよいですか?