如何将关系模型作为哈希?

时间:2015-06-13 02:19:59

标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord

我想要一个我Post模型的哈希表示,并将帖子的相关注释包含为哈希数组。

我的模特:

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post
end

所以输出应该是这样的:

{
  "id": 3,
  "body": "This is a post",
  "comments": [
    {
      "id": 1,
      "post_id": 3,
      "body": "This is a comment",
    }
  ]
}

我尝试过的事情(只返回帖子,但没有回复相关评论:

Post.includes(:comments).as_json
Post.eager_load(:comments).as_json

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

Post.as_json(include: :comments)

答案 1 :(得分:0)

我担心这就是ActiveRecord会为你做的事情:2个请求。 一个用于父对象,一个用于子对象。

尝试使用JOIN创建SQL代码并将其定向到对象,然后在生成的对象上运行as_json。