Как использовать Rails include? - PullRequest
0 голосов
/ 14 мая 2018

У меня есть модель пользователя с большим количеством заказов

 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 голосов
/ 14 мая 2018

Вы можете использовать включения, используя указанный ниже запрос:

@users = User.where(id: 1).includes(:orders)

, затем итерируйте по @users и извлекайте соответствующих данных о пользователе и заказе.

Кроме того, вы можете использовать отложенную загрузку какхорошо используя следующий запрос:

@users = User.where(id: 3).joins(:orders => [:order_data]).select("orders.*, users.first_name")

В этом вы будете получать все данные в одном запросе без рельсов, кеширующих объекты БД в памяти, как в случае с include.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...