[英]How to select columns from multiple table in rails?
我有兩個表 User 和 Order 以及這兩個表之間的關聯如下。
在用戶模型中
has_many :orders, dependent: :destroy
在訂單模型
belongs_to :user
我想從訂單表中選擇所有數據,但我想從用戶表中選擇該用戶的名稱而不是 user_id。
我該怎么做? 提前致謝。
您可以簡單地執行以下操作:
orders = Order.where(your_conditions).includes(:user)
進而:
orders.each do |order|
order.user.name # implies that every order has a user
# or
order.user&.name # won't fail if order.user returns nil
end
這稱為預先加載,您可以在此處找到文檔: http : //guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
語句Order.joins(:user).select('orders.*, users.name')
獲取訂單及其所有列和同一記錄中的用戶名,表名應以復數形式傳遞選擇指令。
您無需在控制器中進行任何特殊選擇。
在您的控制器中:
@orders = Order.last(5) # gets 5 most recent orders
在您看來:
@orders.each do |order|
order.user.name # or order.user.first_name, e.t.c
end
只需從order中訪問用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.