两个模型之间的多个多对多关联

时间:2015-06-15 05:20:07

标签: ruby-on-rails-4 activerecord associations

我创建了一个多对多关系,如下面的结构。

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 个答案:

答案 0 :(得分: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表中进行搜索。

注意: 未经过测试。