class Manager < ApplicationRecord
has_many :bands
end
class Band < ApplicationRecord
belongs_to :manager
has_many :member_bands
has_many :members, through: :member_bands
end
class Member < ApplicationRecord
has_many :member_bands
has_many :bands, through: :member_bands
end
class MemberBand < ApplicationRecord
belongs_to :member
belongs_to :band
end
我最终想要做的就是让给定的经理获得所有成员。
我觉得我需要做一些连接,但是很难确定。
我已经尝试过,manager.bands.joins(:members)
但是我只有多个bands
成员,而没有成员。
我现在正在与多个循环一起破解:
manager.bands.each do |band|
band.members.each do |member|
##
end
end
那么,如何获取members
与给定manager
(通过进行连接的人bands
)的所有关联?
根据您的关联,您应该可以添加
has_many :members, through: :bands
给您的经理。
irb(main):003:0> Manager.first.members
Manager Load (0.2ms) SELECT "managers".* FROM "managers" ORDER BY "managers"."id" ASC LIMIT $1 [["LIMIT", 1]]
Member Load (0.6ms) SELECT "members".* FROM "members" INNER JOIN "member_bands" ON "members"."id" = "member_bands"."member_id" INNER JOIN "bands" ON "member_bands"."band_id" = "bands"."id" WHERE "bands"."manager_id" = $1 LIMIT $2 [["manager_id", 1], ["LIMIT", 11]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Member id: 1>, #<Member id: 2>, #<Member id: 3>, #<Member id: 5>, #<Member id: 6>, #<Member id: 7>]>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句