2015-06-15 103 views
0

我創建瞭如下結構的多對多關係。兩個模型之間存在多個多對多關聯

Class User 
has_many :companies, :through => company_admins 
has_many :company_admins 
end 

Class Company 
has_many :company_admins 
has_many :users, :through => company_admins 
end 

Class CompanyAdmin 
belongs_to :company 
belongs_to :user 
end 

這裏,User可以被指定爲管理上的許多Company

現在我要與UserCompany創建另一個多對多關係,其中User可以遵循許多company。我怎樣才能做到這一點?

我添加

Class User 
has_many :companies, :through => company_admins 
has_many :companies, :through => followers 
has_many :company_admins 
has_many :followers 
end 

Class Company 
has_many :company_admins 
has_many :followers 
has_many :users, :through => company_admins 
has_many :users, :through => followers 
end 

Class Follower 
belongs_to :company 
belongs_to :user 
end 

現在,如果我尋找被管理員使用@company.users它在Follower表搜索任何一家公司的用戶。 任何人都可以幫助我與協會?

回答

1

我猜你的協會成立應該是這樣的

#user.rb 
Class User 
has_many :company_admins 
has_many :companies, :through => company_admins 
has_many :followers 
has_many :followed_companies, :through => followers, :source => :company 
end 

#company.rb 
Class Company 
has_many :company_admins 
has_many :users, :through => company_admins 
has_many :followers 
has_many :followed_users, :through => followers, :source => :user  
end 

#follower.rb 
Class Follower 
belongs_to :company 
belongs_to :user 
end 

現在,如果你給@company.users,它將在company_admins表搜索,如果你給@company.followed_users,它將在followers表搜索。

注:沒有測試。

+0

它的工作。我已經接受了答案。 :D – Emu

+0

還有一件事,你已經使用':class_name'。我見過有人使用':source'。你能告訴我區別嗎? – Emu

+0

@Emu其實它應該是'source'。本文詳細解釋http://stackoverflow.com/questions/13611265/rails-difference-between-source-and-class-name-in-models – Pavan

相關問題