2012-04-22 3 views
2

현재 다 대 다 관계를 구현하기 위해 has_and_belongs_to_many를 사용하고 있습니다. 그러나 many_to_many 테이블에 속성을 넣길 원할 것입니다.레일에있는 다 대다 테이블에 다른 속성 추가하기

기본적으로 전자 메일 시스템을 만들고 있습니다. 나는 사용자와 대화가있다. 사용자는 많은 대화를 가질 수 있고 대화는 많은 사용자를 가질 수 있습니다. 그러나 어떤 메시지를 읽었는지 보여주기 위해 읽음/읽지 않음 특성을 가질 수 있도록하려고합니다. 대화에는 많은 사용자가있을 수 있기 때문에 대화를 모든 사람이 읽을 수 있다는 의미로 대화 테이블에 속성을 넣는 것은 현실적이지 않습니다. 그래서 중간 테이블에서 가장 잘 작동한다고 생각합니다. 중간 테이블에서 그 속성에 어떻게 접근 할 수 있는지 궁금합니다. 속성이 읽히는 경우. 액세스하기 위해 어떤 코드를 입력해야하며 속성을 업데이트하는 방법은 무엇입니까? 위에 언급 한대로 has_and_belongs_to_many를 사용하고 있습니다.

+1

['has_many : through']를 사용하십시오. (http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many) – pjumble

답변

5

has-and-belongs-to-many association에 추가 속성을 추가하려면 해당 관계에 대한 모델 클래스를 작성해야합니다. 자세한 내용은 Rails Guides about it을 참조하십시오.

독자적으로 읽은 후에는 현재 레일즈 버전에서 더 이상 사용되지 않으므로 has_many :through으로 전환해야합니다. 귀하의 모델이 될 수있다 (connection가 M2N 관계에 대한 좋은 이름 인 경우 복사 및 레일 가이드 변경, 나도 몰라) :

class User < ActiveRecord::Base 
    has_many :connections 
    has_many :conversations, :through => :connections 
end 

class Connection < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :conversation 
end 

class Conversation < ActiveRecord::Base 
    has_many :connections 
    has_many :users, :through => :connections 
end 

당신이 당신의 connections 테이블에 추가 속성을 추가 할 수 있습니다, 코드를 참조하십시오.

+0

여러 형태로 비슷한 문제가 있습니다. 및 추가 속성. create.http에 추가 속성을 삽입하는 매개 변수를 만들 수 없습니다. //stackoverflow.com/questions/11199572/rails-3-2-has-many-through-form-submission#comment14710178_11199572 – ctilley79

관련 문제