[英]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.