Rails中两个表之间的简单连接

时间:2013-05-05 03:14:46

标签: ruby-on-rails json api grape

我正在构建一个rails应用程序,作为API的后端。 (使用葡萄API) 我有两个表(用户,评论),其中用户有很多评论,评论属于一个用户。

我正在尝试返回所有注释,并且在Comment对象中,我想为创建该注释的用户显示User对象。

我试过了:

Comment.includes(:user)

Comment.joins(:user).includes(:user)

他们都没有设法返回子对象。只返回Comment对象(具有user_id)属性。)

有没有办法以JSON格式实现(如上所述,我使用GRAPE)

3 个答案:

答案 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方法。我也会练习从父表开始。