2015-12-04 61 views
2

我有三個型號 - User, Membership, Connection,它們看起來就像這樣:我可以通過關係中的外鍵做一個`has_many'嗎?

class User < ActiveRecord::Base 
    has_many :memberships, dependent: :destroy 
end 

class Membership < ActiveRecord::Base 
    belongs_to :inviter, class_name: "User", foreign_key: "user_id" 
    belongs_to :invited, class_name: "User", foreign_key: "invited_id" 
    has_many :connections, dependent: :destroy 
end 

class Connection < ActiveRecord::Base 
    belongs_to :inviter_membership, class_name: "Membership", foreign_key: "membership_id" 
    belongs_to :invited_membership, class_name: "Membership", foreign_key: "invited_membership_id" 
end 

但是...我希望做的是從安裝到user一個connections直接連接。所以,理想情況下我希望能夠做到user.invited_connectionsuser.inviter_connections,他們將對應正確的連接。

user.invited_connections將對應於連接在membership.user_id == current_user.id(但請記住它與已與... user_iduser_id相關的不只是成員相關聯的成員記錄相關聯的連接。

這是可能的

回答

2

你可以嘗試這樣的:?!

has_many :invited_connections, through: :memberships, source: :invited_membership 
has_many :inviter_connections, through: :memberships, source: :inviter_membership 

乾杯

相關問題