2012-03-12 5 views
2

임 상호 양방향 관계를하는 방법을 알아 내려고 노력, 즉 :ruby ​​on rails가 활성 레코드에서 양방향 친구 관계를 유지하고 있습니까?

user_id friend_id 
    1   2 
    2   1 

위의 사용자가 1 년에 두 user_id = 1friend_id = 2friend_id = 2이있는 경우 사용자 2가 친구가 될 것입니다 user_id = 2 것처럼이 친구에 테이블. ActiveRecord에서 모든 양방향 상호 관계를 계산하는 방법은 무엇입니까?

답변

2

은 무엇 당신이 찾고있는 것은 has_and_belongs_to_many relationship입니다 :

class User < ActiveRecord::Base 
    has_and_belongs_to_many :friends, :class_name => "User", 
            :foreign_key => "this_user_id", 
            :association_foreign_key => "other_user_id" 
end 

§4.4.2.1에서입니다.

+1

이 경우에는 'has_many : through'와 풍부한 연관성을 사용해야한다고 생각합니다. 이렇게하면 "친구", "사용자 1 요청", "사용자 2 요청"과 같은 관계 상태를 가질 수 있습니다. – Ashitaka

+0

@Ashitaka 실제로 할 수 있습니다. 그리고 당신은 언제나 has_and_belongs_to_many'에서 미래의 구체적인 조인 모델로 (상대적으로 매끄럽게) 전환 할 수 있습니다. –

1

Micheal Heartl Ruby on Rails 튜토리얼의 마지막 장을 읽으십시오. 예제를 통해 레일즈 예제를 배우십시오. 여기에 무료 온라인 버전이 있습니다.

https://www.railstutorial.org/book/following_users

는 마지막 장에서 살펴 보자. 나는 그것이 도움이되기를 바랍니다.

+1

"새 테이블을 만들지 마십시오. 테이블을 만듭니다 ..."라는 모순이 아닙니까? –

관련 문제