2017-01-07 4 views
1

사용자가 그룹을 만들고 다른 사용자가 그룹에 가입 할 수있는 그룹 시스템을 구현하려고합니다.Ruby on Rails - 그룹 사용자

<% if current_user == @group.owner %> 

하지만 함께 그룹의 구성원을 확인 드릴 수 없습니다 :

class User < ApplicationRecord 
    has_many :groups 
end 

class Group < ApplicationRecord 
    belongs_to :owner, :class_name => "User" 
    has_many :members, :class_name => "User" 
end 

소유자를 확인해볼 때, 나는 성공적으로 사용할 수 있습니다 내가으로 실행으로

<%= @group.members.count %> 

오류 :

SQLite3::SQLException: no such column: users.group_id: SELECT COUNT(*) FROM "users" WHERE "users"."group_id" = ? 

내 사용자 설정 방법과 관련이 있지만 알아낼 수는 없습니다.

또한 그룹에 '가입'한 모든 사용자가 포함 된 목록을 가져올 수 있다면 어떻게 사용자를 추가/삭제할 수 있습니까?

감사합니다.

+0

has_many : members, : class_name => "사용자"는 사용자 테이블에서'group_id'를 기대합니다. 정확히 오류의 내용입니다. – Abhi

+0

연관된 모델'Group'에서 참조하기 위해'users' 테이블에 외래 키 ('group_id')를 추가해야합니다. – sa77

답변

2

여기에 두 가지 가능성이 있습니다

One User can belong to Many Groups

한 사용자가 당신의 연결은 당신이 어떤 그룹에 식별 할 User 모델 또는 users 테이블에 group_id 속성을 추가 할 필요가 다음 말한다 하나 개의 그룹에 속하는 경우 사용자가 속합니다. 현재 예외가 발생하는 이유는 그 열을 가지고 있지 않기 때문입니다. owner에 관해서는 이 Group이고 owner 인 테이블은 User입니다.

User - group_id 
Group - owner_id 

그러나 당신이 가진 것,이 방법은 단 하나의 groupUser와 관련, 그래서 당신의 has_many :groupsUser 모델에서 아무 소용이입니다. 당신이 사이에 다른 테이블을 필요로 여러 가지려면 : 여러 그룹에 속할 수 있습니다

One User will belong to only One Group

만일 한 사용자 당신은 user_idgroup_id있을 것이다 UserGroups 같은 또 하나 개의 모델을 만들 필요하고, 협회는 다음과 같이 갈 것입니다 :

class User < ActiveRecord::Base 
    has_many :user_groups 
    has_many :groups, through: :user_groups 
end 

class Group < ActiveRecord::Base 
    has_many :user_groups 
    has_many :users, through: :user_groups #This can be members also using `class_name` 
end 

class UserGroup < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :group 
end 
+1

이 질문/답변, http://stackoverflow.com을 참조하여이 작업을 수행 할 수있었습니다./questions/5639202/group-and-a-user 간의 how-do-i-create-a-join-action –

1

사용자도 그룹에 속합니다 (잊어 버렸습니다). 그룹 스키마에서 그룹 ID를 만들어야 그룹을 만들 수 있으며 다른 사용자는 특정 그룹에 가입 할 수 있습니다. 소유자와 구성원 모두 스키마에 "참조"유형이어야합니다. 그것으로 당신은 잘되어야합니다.

+0

예제를 보여줄 코드를 추가 할 수 있습니까? 나는 Rails에 익숙하지 않고 다음과 같은 어려움을 겪고있다. –