ruby datamapper如何在查询中包含具有n个关联的子关联

时间:2013-06-15 23:54:59

标签: ruby ruby-datamapper

假设我有Article n Comments。我将如何使用DataMapper在一个查询中抓取文章中的所有注释?

类似以下错误代码:

Article.get(:id).include(:comments).to_json

我希望在json中返回相关的注释,如下所示:

{
  article object
  comments: [
    { comment object },
    { comment object } 
  ]
}

似乎必须有一个比抓取注释更好的方法,并在调用to_json之前手动将它们添加到属性哈希中。

1 个答案:

答案 0 :(得分:8)

lib/to_json.rb

中的https://github.com/datamapper/dm-serializer上找到它

似乎有relationshipsmethods两种选项作为to_json方法的选项。默认包含是不可能的,但要求:

@article.to_json(methods: [ :comments ])

为了更深入,代码中的注释中有一个未记录的(因此可以更改)示例:

comments.to_json(:relationships=>{:user=>{:include=>[:first_name],:methods=>[:age]}})

类似于:

@article.to_json(relationships: { comments: { methods: [ :likes ] } }