2

ユーザーまたは既存のグループで構成できるグループを含むアプリケーションをセットアップしようとしています。

例:

  • ユーザーAndyBobCharlie、およびDavidは、1 番目のフォワーダーグループに属しています。
  • ユーザーEddyFrankGeorgeHowardIggy、およびJackは、第 1 ミッドフィールダーグループに属しています。
  • ユーザーKennyLennyMaxNedOscarPeter、およびQuinは、1 番目の防御者グループに属しています。
  • ユーザーRitaは、第 1 ゴールキーパーグループの唯一のユーザーです。
  • ユーザーAndyBobEddyFrank、およびKennyalpha バスケットボールグループに属しています。
  • グループ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応答が返されます。

モデルとクラスが正しく設定されていますか?
そうでない場合、私は何を間違って行いましたか?
その場合、子供の情報を取得するにはどうすればよいですか?

または、これに間違ってアプローチしていますか?もしそうなら、どのようにアプローチすればよいですか?

4

1 に答える 1

1

ポリモーフィック関連列は、child_idおよびchild_typeである必要があります。

于 2011-08-20T17:08:36.920 に答える