2015-12-17 60 views
0

我必須在rails上的ruby中的2個表上進行連接查詢。它工作正常,但對象不包含我已加入的2個表中的列。在Ruby on Rails中加入查詢

在控制器

@posts = Posts.select("*").joins(:users).joins(:categories).all 

鑑於

<% @posts.each do |p| %> 
<%= p.inspect %> 
<% end %> 

結果鑑於

不具有表的用戶,等用戶名列...

回答

1

使用連接查詢之後的對象實際上包含兩個表的數據,但在給出放入或檢查時,butt不會顯示它。

我們可以直接調用用戶表中的從所述@posts屬性對象等,

<%= @ posts.first.user_name%>或任何其他方面。

+0

謝謝你,鑑於我使用<%@ posts.username%>然後它不顯示任何東西,我用<%= %> –

+0

修好了,好的編碼。 – Sravan

0

請嘗試:

@posts = Posts.select("users.username, users.column2, users.column-n, categories.name, categories.column2, categories.column-n*").joins(:users, :categories).all 
+0

非常感謝,select(「*」)相同的select(「users.username,etc ..」)。我解決了這個問題:D –

0

其實它應該工作。

雖然只檢查顯示你的帖子屬性,這樣做後:

@posts = Post.select("*").joins(:users).joins(:categories).all 

試圖讓用戶

<% @posts.each do |p| %> 
    <%= p.first_name %> # or any other user attribute 
<% end %> 

的特定屬性,它應該首先告訴你的用戶名稱。

如果它不工作,你可以這樣做:

@posts = Post.select("posts.*, users.*, categories.*").joins(:users).joins(:categories).all 
  • 注意的是,在select(...HERE...)表名是其複數形式,因爲在數據庫本身的表的名稱。