我正在构建一个rails应用程序,作为API的后端。 (使用葡萄API) 我有两个表(用户,评论),其中用户有很多评论,评论属于一个用户。
我正在尝试返回所有注释,并且在Comment对象中,我想为创建该注释的用户显示User对象。
我试过了:
Comment.includes(:user)
和
Comment.joins(:user).includes(:user)
他们都没有设法返回子对象。只返回Comment对象(具有user_id)属性。)
有没有办法以JSON格式实现(如上所述,我使用GRAPE)
答案 0 :(得分:2)
如果您的评论属于用户且您的用户有很多评论
您可以使用此查询:
Comment.find(:all, :joins => :user)
答案 1 :(得分:1)
您可以使用to_json或as_json:include选项。在你的api:
resources :comments
get :id do
Comment.includes(:user).find(params[:id]).to_json(include: :user)
end
end
但是,迟早您可能需要更多地控制API生成的json响应。我建议你看看grape-rabl gem(或者其他一些构建json的解决方案 - 那里有很多它们)。它会给你更好的控制......
答案 2 :(得分:0)
User.all.select( '*')连接(:评论) 返回所有字段需要select方法。我也会练习从父表开始。