2017-10-29 8 views
1

私はレールが少し新しく、アプリケーションにユーザグループを作成したいと思います。ユーザーは多数のグループに属し、グループには多数のユーザーが存在することができます。例えば、すべての一級教師がいる1級のグループがあり、他の多くのグループにも属します。ユーザグループを作成するレール

これは私の現在のコードです。

私がRubyコンソールのグループにユーザーを割り当てると、ただちに1つのグループIDが許可されます。ユーザーに複数のgroup_idを持たせるにはどうすればよいですか?

+1

http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association – AbM

+0

@AbM私はこれを見ましたが、2つのモデルしかないので混乱しました。 –

+0

'user_id'と' group_id'を持つ 'Membership'のような3番目のモデルを作る必要があります。 – AbM

答えて

2

この場合、NxN(多対多)の関係が必要です。そのためには追加のモデルが必要です。あなたはこのようにそれを生成することができます。

rails g model UserGroup user:references group:references 

その後、あなたはこのようなあなたのモデルを変更します。

class Group < ApplicationRecord 
    has_many :user_groups 
    has_many :users, through: :user_groups 
end 

class User < ApplicationRecord 
    has_many :user_groups 
    has_many :groups, through: :user_groups 
end 

こうすることで、あなたはこのようなユーザ・グループにアクセスできます。

User.first.groups 

かこのようなグループのユーザー:

Group.first.users 

これが役立つことを願って...幸運!

+0

グループ内のすべてのユーザの配列とグループ内のユーザ数を取得するにはどうすればよいですか? –

+1

@TrentonTylerええ。グループインスタンス(例ではGroup.first.users)にアクセスすると、そのグループのすべてのユーザーが取得されます。 Group.first.users.countを実行すると、そのグループのユーザー数が取得されます –

関連する問題