0

我有一个可以与自身相关的多态模型:

class Comment < ActiveRecord::Base
  belongs_to :commentable, polymorphic: true
  has_many :comments, as: :commentable
end

这些关系完美地工作,除非我试图通过include声明调用完整的子/父评论树:

Post.find(1).include(:comments)

这仅包括与帖子直接相关的评论。我也许可以通过以下方式检索第二级:

Post.find(1).include(comments: :comments)

但是,如果我想从帖子中获取所有评论,无论嵌套多深怎么办?这可能吗?

4

1 回答 1

2

您似乎想检索邻接列表。Rails 没有立即支持它,但如果您使用的是 postgresql,则可以使用“WITH RECURSIVE”运算符。

该插件负责处理:https ://github.com/chrisroberts/acts_as_sane_tree

否则,您可以很容易地创建自己的 postgresql 函数(在迁移中声明它),然后在查询中使用它。看看:http ://wiki.postgresql.org/wiki/Getting_list_of_all_children_from_adjacency_tree

WITH RECURSIVE 目前没有在 mysql 或 sqlite3 中实现。

于 2013-05-29T21:52:13.553 回答