2014-12-09 5 views
0

피트와 사용자라는 두 가지 모델이 있습니다. 구덩이는 근본적으로 칭찬받는 모델입니다. 사용자가 참여하는 토론. 나는 기본적으로 사용자가 구덩이에 "가입"하고 그 구덩이와 관련되도록 할 수 있다면 좋을 것입니다. 나는 여기에서 몇 가지 검색을 해본 적이 있는데, 다른 "그룹"모델을 만들 필요가 있는지 여부는 확실하지 않습니다. 사용자는 많은 구덩이를 가질 수 있으며 조인을 통해 많은 구덩이에 속할 수 있기를 바랍니다. 나는 이것에 초보자이고, 정말로 그것을 망치고 싶지 않다. 그래서이 일에 착수하기 전에 약간의 충고를 원할 것이다. 어떤 조언을 주셔서 감사합니다.다른 모델과 사용자를 조인 할 때 세 번째 모델이 필요한지 알아야합니다.

현재 핏 모델

class Pit < ActiveRecord::Base 
    validates :topic, :author, :summary, presence: true 
    acts_as_taggable 
    acts_as_votable 
    has_many :comments 
    belongs_to :user 

현재 사용자 모델

이 사이트를 통해 내 검색을 기반으로
class User < ActiveRecord::Base 
    acts_as_voter 
    has_many :pits 
    has_many :comments 

와 나는 어쩌면 별도의 "그룹"을 만드는 데 필요한 느낌을 받고 있어요 구글 모델은 "has_many_through"를 가지고 있지만 이것이 필요하지 않다면 이상하게 복잡하게 만들고 싶지는 않습니다. 감사.

답변

1

has_and_belongs_to_many association을 사용해야합니다.

이렇게하면 각 사용자가 많은 피트를 가질 수 있고 각 피트는 많은 사용자를 가질 수 있습니다. 그것은 당신이 같은 방법에 액세스 할 수 있습니다 :

@user.pits - 사용자가 @pit.users 속한 모든 구덩이 돌아갑니다 - 특정 구덩이에 속하는 모든 사용자를 반환합니다

당신은 manually create, via a migration, the join table 필요합니다을하는 pits_users이라고해야하며 두 개의 열, pit_iduser_id이 있어야합니다.

@pit.users.create(@current_user) 

이것은에 항목을 추가합니다 : 사용자가 구덩이에 참여하면 다음과 같이

class Pit < ActiveRecord::Base 
    ... 
    has_and_belongs_to_many :users 

class User < ActiveRecord::Base 
    ... 
    has_and_belongs_to_many :pits 

, 당신은 코드를 작성할 수 : 다음에 구덩이와 사용자 모두 모델을 업데이트해야합니다 피트 ID와 사용자 ID로 구성된 조인 테이블.

+0

이것이 내가 Robin을 찾고 있었던 이유입니다. 감사. 그냥 확실하지 않았습니다. 도움을 감사하십시오. –