我有一个有很多订单的模型用户
class User < ApplicationRecord
has_many :orders, inverse_of: :user, dependent: restrict_with_exception
end
和模型订单如下: -
Class Order < ApplicationRecord
belongs_to :user, inverse_of: :order
end
我想获取所有订单,但是在同一个集合中包含user.name和user.mobile等用户的详细信息。在这种情况下如何使用include? p>
答案 0 :(得分:1)
您可以使用包含使用下面提到的查询:
@users = User.where(id: 1).includes(:orders)
然后遍历@users并获取相应的用户和订单数据。
此外,您还可以使用以下查询来使用延迟加载:
@users = User.where(id: 3).joins(:orders => [:order_data]).select("orders.*, users.first_name")
在这里,您将获得单个查询中的所有数据,而无需在内存中缓存db对象,就像包含一样。