Это может привести к путанице между методами includes
и joins
, которые имеют смежные, но очень разные значения.
includes
будет загружать связанные записи, что впоследствии предотвращает множественные вызовы базы данных. В основном используется для настройки производительности.
joins
будет включать соединение с соответствующей таблицей в запрос к базе данных, что позволяет вам строить условия на основе связанной модели.
Обратите внимание, что для использования объединений необходимо ссылаться на имя таблицы, а не на имя отношения. По умолчанию ActiveRecord подключается к таблице, которая является множественным именем модели.
Итак, изменение включает в себя объединения и «заказ» на «заказы»:
User.where(id: selected_salesmen.pluck(:id))
.joins(:orders)
.where(
"orders.booked_at > ? AND orders.booked_at < ?",
booked_at_gteq,
booked_at_lteq
)
Вы также можете проверить, что selected_salesmen.pluck(:id)
также возвращает некоторые идентификаторы.