0

我有一個Users模型,並希望用戶能夠Subscribe到另一個User以在他們發佈內容時收到通知。HABTM或HM/HMT自加入導軌

這是一種has_many自我加入和many_to_many自我加入。

我需要能夠輸入@user.subscribers@user.subscriptions

因此,這種關係在某種意義上是默認的兩種方式。但是,如果@user1subscribes@user2,這並不意味着@user2subscribed@user1 howevver,@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 2013-04-12 03:42:41

+0

很高興解決。樂於幫助! – OneChillDude 2013-04-12 21:41:07