0

나는 모델을 가지고 있으며 사용자가 Subscribe을 다른 User에 게시하여 사물을 게시 할 때 알림을 받으길 원합니다.HABTM 또는 HM/HMT Self-Join in Rails

이것은 일종의 has_many 자체 조인과 many_to_many 자체 조인입니다.

@user.subscribers@user.subscriptions을 입력 할 수 있어야합니다.

그래서 한 가지 의미에서 관계는 기본적으로 두 가지 방법입니다. 그러나, @user1subscribes 내지 @user2이면, @user2subscribed 내지 @user1이고, @user2@user.subscribers을 통해 @user1을 찾을 수있다.

나는 Ryan Bates를 보았다 Railscast on Self-Referential Associations. 그러나 이는 1 방향 자기 조인을 만듭니다. 그러나 나는 그것이 양 당사자들 사이에 두 가지 관계가있을 수 있다는 사실을 떠나지 않는다고 생각한다.

그러나 나는 또한 내가 라이언 베이츠 방법 아마 수 실현하고, 두 관계를 구축,하지만 그건 잘못된 것 같다,하지만 두 번째 방법은 하나가 될 수 없습니다 것을 두려워 The Rails Guide on association foreign keys.

을 보았다 가입자와 하나는 공급자가 될 수 있습니다. 이 문제를 해결하는 가장 올바른 방법은 무엇입니까?

답변

2

는 이상 일

class Subs < ActiveRecord::Base 

    belongs_to :subscriber, :class_name => 'User' 
    belongs_to :user 

end 

class User < ActiveRecord::Base 

    has_many :subs 
    has_many :subscribers, :through => :subs, :source => :subscriber 
    has_many :subscriptions, :through => :subs, :source => :user 
end 

분명히 당신이 당신의 데이터베이스에 가입 모델을 설정해야

을 복잡하게하지 마십시오. 그리고 그렇게해야합니다.

+1

나는이 이름이 바뀌 었다고 생각한다. 나는 사용자가 구독자이고 그 결과가 구독이라고 생각하지만 그것은 효과가있다. 감사! – dewyze

+0

다행이었습니다. 도와 줄 수있어서 기뻐! – OneChillDude