簡體   English   中英

HABTM或HM / HMT自加入Rails

[英]HABTM or HM/HMT Self-Join in Rails

我有一個Users模型,希望用戶能夠Subscribe其他User ,以便在發布內容時收到通知。

這有點像has_many自連接和many_to_many自連接。

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

因此,默認情況下,這種關系在某種意義上是兩種方式。 但是,如果@user1 subscribes @user2 ,這並不意味着@user2 subscribed @user1 howevver, @user2可以通過@user.subscribers找到@user1

我見過Ryan Bates 關於自我指導協會的Railscast 然而,這創造了1種方式的自連接。 但我認為這並不意味着雙方之間可能存在兩種關系。

但是,我也看過關於外鍵的Rails指南。

我意識到我可能是Ryan Bates的方式,只是建立兩種關系,但這似乎是錯誤的,但我擔心第二種方式不允許一個人成為訂閱者而一個人成為提供者。 最正確的方法是什么?

不要過於復雜化

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

顯然,您必須在數據庫中設置連接模型。 這應該做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM