2013-05-05 56 views
0

我正在構建一個Rails應用程序以作爲API的後端工作。 (使用葡萄API) 我有兩個表(用戶,評論),其中用戶有很多評論和評論屬於一個用戶。Rails中兩個表之間的簡單連接

我想返回所有評論,並在Comment對象中,我想顯示創建該評論的用戶的用戶對象。

我想:

Comment.includes(:user) 

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

而且他們沒有設法返回子對象。只返回Comment對象(具有user_id)屬性)。

有沒有辦法實現,在一個JSON格式(如提到的,我用葡萄)

+0

你在試圖找到「擁有」每個評論的用戶嗎? – abhir 2013-05-05 03:42:33

+0

是的。但是,我想將它們作爲一個對象返回。像:{comment.id:1,comment.text:whatever,comment.user:{user.id:1,user.firstname:john .......}} – alybadawy 2013-05-05 12:24:30

+0

您可以發佈User和Model的關係評論? – abhir 2013-05-07 02:09:35

回答

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--其中有很多)。它會給你更精細的控制...

+0

我知道很久以前我接受了這個答案;實際上在3年前。但想再次感謝你:) – alybadawy 2016-08-05 15:37:47

2

如果您的評論belongs_to的用戶和您的用戶有很多評論

您可以使用此查詢:

Comment.find(:all, :joins => :user) 
0

User.all.select('*')。joins(:comments) select方法需要返回所有字段。我也會習慣從父表開始。

相關問題