我必須在rails上的ruby中的2個表上進行連接查詢。它工作正常,但對象不包含我已加入的2個表中的列。在Ruby on Rails中加入查詢
在控制器
@posts = Posts.select("*").joins(:users).joins(:categories).all
鑑於
<% @posts.each do |p| %>
<%= p.inspect %>
<% end %>
結果鑑於
不具有表的用戶,等用戶名列...
我必須在rails上的ruby中的2個表上進行連接查詢。它工作正常,但對象不包含我已加入的2個表中的列。在Ruby on Rails中加入查詢
在控制器
@posts = Posts.select("*").joins(:users).joins(:categories).all
鑑於
<% @posts.each do |p| %>
<%= p.inspect %>
<% end %>
結果鑑於
不具有表的用戶,等用戶名列...
使用連接查詢之後的對象實際上包含兩個表的數據,但在給出放入或檢查時,butt不會顯示它。
我們可以直接調用用戶表中的從所述@posts屬性對象等,
<%= @ posts.first.user_name%>或任何其他方面。
請嘗試:
@posts = Posts.select("users.username, users.column2, users.column-n, categories.name, categories.column2, categories.column-n*").joins(:users, :categories).all
非常感謝,select(「*」)相同的select(「users.username,etc ..」)。我解決了這個問題:D –
其實它應該工作。
雖然只檢查顯示你的帖子屬性,這樣做後:
@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...)
表名是其複數形式,因爲在數據庫本身的表的名稱。
謝謝你,鑑於我使用<%@ posts.username%>然後它不顯示任何東西,我用<%= %> –
修好了,好的編碼。 – Sravan