活动记录 - 如何在一个查询中获取所有直接和间接子项

时间:2017-01-25 19:11:28

标签: ruby-on-rails ruby

所以我有一个主题的顶级课程,每个课程都可以通过parent_id

获得子主题
belongs_to :parent, :class_name => "Topic"
has_many :sub_topics, :class_name => "Topic", :foreign_key => "parent_id"

每个主题都有频道......

has_many :channels

但是这只能得到直接的孩子......而且我一直在努力用一种巧妙的方式来获得所有主题的信道......包括2,3级,4等等... ..

has_many :sub_channels, :through => :sub_topics, source: :channels

这获得了第二级别的频道,但忽略了顶层和更深层......但这似乎是在我想要达到的目标的错误道路上......

是否有一个很好的网络资源可以解释如何执行此操作?

1 个答案:

答案 0 :(得分:0)

花了很多时间研究这个...似乎最好的方法是使用嵌套的set / ancestry之类的宝石来节省自己构建大量的查询。感谢上面提到的评论者。