如何使用Rails包括?

时间:2018-05-14 05:32:32

标签: ruby ruby-on-rails-3 join activerecord

我有一个有很多订单的模型用户

 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?

1 个答案:

答案 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对象,就像包含一样。