0

我有一个带有嵌套评论的表格,它们有comment_id指向父评论的字段。我输入has_many :comments, :class_name => "Comment"了评论的模型,所以我有一棵树。问题是如何利用 Rails 和 ActiveRecord 的所有功能从数据库中获取整个评论树并以 json 格式对其进行响应?我知道祖先 ,但我想找到没有任何侧面宝石的解决方案。我想学习在 Rails 中操作树状结构的最佳方法,因为这个任务会在我进一步的练习中一次又一次地出现。

更新:

我在这里找到了一些相关的问题并使用了答案。我在模型中定义方法

  def self.get_tree(comments)
    comments.map { |comment|
      {:responses => get_tree(comment.comments), :user => comment.user, :text => comment.text}
    }
  end

然后调用它来获取整棵树(有一些条件)

render :json => Comment.get_tree(Comment
  .where('announce_id = ?', params[:id])
  .where('comment_id is NULL'))

有了这个实现,我现在清楚地看到这个任务不需要辅助宝石。但在当前的实现中,我应该在地图中列出所有评论的属性。有什么方法可以扩展现有对象{:responses => get_tree(comment.comments), :user => comment.user}吗?我发现 << 用于数组, .update 用于哈希,但后来我发现我不知道地comment图块内部是什么。它要么是数组,要么是哈希,要么是对象...

4

0 回答 0