簡體   English   中英

在Ruby on Rails中加入查詢

[英]Join query in Ruby on Rails

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

在控制器中

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

視野中

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

結果顯示

表用戶等中沒有列用戶名...

使用聯接查詢后出現的對象實際上包含兩個表的數據,但是在進行放置或檢查時對接不會顯示它。

我們可以直接通過@posts對象調用users表的屬性,例如,

<%= @ 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

實際上它應該工作。

盡管檢查僅顯示了Post屬性,但執行此操作后:

@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...)中的表名采用復數形式,因為它是數據庫本身中表的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM