我有几个型号
class AAA < ActiveRecord::Base
has_many :bbbs, through: :some_other_model
end
class BBB < ActiveRecord::Base
has_many :cccs, through: :yet_another_model
end
假设我有一个AAA
实例的引用,如何在不使用CCCs
之类的低效模式的情况下获取所有a.bbbs.map { |x| x.cccs }
的平面列表?
答案 0 :(得分:2)
从RoR 3.1开始,您可以嵌套has_many :through
个关联。
与a:through选项的关联现在可以使用任何关联作为 通过或源联系,包括其他有关联的协会 a:通过选项和has_and_belongs_to_many关联。
在你的例子中:
class AAA < ActiveRecord::Base
has_many :bbbs, through: :some_other_model
has_many :cccs, through: :bbbs
end
AAA.first.cccs # => [ccc1, ccc2, ...]