У меня есть модель User с некоторыми отношениями:
class User < ApplicationRecord
has_many :hierarchies
has_one :hierarchy, -> { where(end_at: nil) }
has_one :boss, through: :hierarchy
has_one :department, through: :hierarchy
end
Я пытаюсь использовать эти данные в представлении:
@users = current_team.active_users.
order(director: :desc, leader: :desc, active: :desc, nickname: :asc).
includes(:department, :boss, :hierarchy)
Когда я перебираю каждого пользователя, user.department
и user.boss
работает нормально, без новых запросов, но иерархия - нет.Каждый раз, когда я пытаюсь получить доступ к user.hierarchy
, он вызывает новый запрос:
CACHE Hierarchy Load (0.0ms) SELECT "hierarchies".* FROM "hierarchies" WHERE "hierarchies"."user_id" = $1 AND "hierarchies"."end_at" IS NULL ORDER BY "hierarchies"."id" DESC LIMIT $2 [["user_id", 115], ["LIMIT", 1]]
Этот ответ (https://stackoverflow.com/a/34865972/5077874) дал мне представление о том, что не так, where filter
в отношении, ноЯ не мог заставить это работать.