Я работал над приложением для планирования и столкнулся с проблемой поиска способа эффективного получения конкретных записей.
Вот модели, о которых идет речь.
class Task < ApplicationRecord
belongs_to :user, optional: true
belongs_to :project, optional: true
belongs_to :project_schedule, optional: true
belongs_to :user_schedule, optional: true
class User < ApplicationRecord
include Filterable
validates :email, presence: true
validates :email, uniqueness: true
has_many :tasks
Внешний интерфейс ожидает, что json всех пользователей со всеми задачами, вложенными в них.Это стало слишком громоздким, чтобы загружать такое количество задач, и я пытался указать диапазон дат для этих задач, продолжая привлекать всех пользователей.
Так что это кажется более сложным, чем я первоначально ожидал.Я могу эффективно получить всех пользователей, все задачи в диапазоне дат и всех пользователей с задачами в заданном диапазоне дат с включенными задачами.Но получение всех пользователей с задачами, вложенными в определенный диапазон дат, ускользнуло от меня.
То, что я пробовал
User.filter(params.slice(:project_ids, :email, :id))
.includes(:tasks).where('((tasks.end_date BETWEEN ? AND ?)
OR (tasks.start_date BETWEEN ? AND ?))',
week_start, week_end, week_start, week_end)
.references(:tasks).order(:name)
Я также пытался объединить всех пользователей и всех пользователей с задачами.в пределах диапазона безрезультатно.
Я чувствую, что ключ - это неформатированный SQL, но вчера я не смог обернуть голову вокруг запроса.
Любое понимание будет полезным и ценимым.