5

RubyonRailsでの関連付けについて質問があります。アプリケーションには、プロジェクト、ユーザー、ロール、およびグループがあります。プロジェクトはユーザーのいるグループに属しています。ユーザーは多くの異なるグループに属することができますが、そのグループ内で特定の役割を1つだけ持つことができます。例えば:

あるグループではユーザーはプロジェクトの所有者ですが、別のグループでは彼はライターです。

Railsの組み込み関数を使用してこれを実装するための最良の方法は何ですか?

ありがとう

4

1 に答える 1

8

以下は、要件を満たすモデルの非常に簡単なセットです。

class User < ActiveRecord::Base
  has_many :group_memberships
  has_many :groups, :through => :group_memberships
end

class GroupMembership < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
  belongs_to :group
end

class Role < ActiveRecord::Base
  has_many :group_memberships
end

class Group < ActiveRecord::Base
  has_many :group_memberships
  has_many :users, :through > :group_memberships
end

基本的に、ユーザー、グループ、およびロール ID を持つ結合テーブルがあります。移行は質問者の演習として残します

于 2009-03-11T20:57:30.360 に答える