我创建了一个多对多关系,如下面的结构。
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
上分配为管理员。
现在我要与User
和Company
创建另一个多对多关系,其中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
表中进行搜索。
任何人都可以帮助我协会吗?
答案 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
表中进行搜索。
注意: 未经过测试。