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