Задать вопрос
@Fly3110
web developer

Почем не срабатывает unscope для HABTM в includes запросе?

Все привет.

Есть 2 модели.

class User < ActiveRecord::Base
  has_and_belongs_to_many :tasks
  has_and_belongs_to_many :completed_tasks, -> { unscope(where: :completed).where(tasks: {completed: true}) }, class_name: Task, join_table: :users_tasks
end


class Task < ActiveRecord::Base
  default_scope -> { where(completed: false).order(id: :asc) }

  has_and_belongs_to_many :users
end


Код
User.find(1).completed_tasks

срабатывает нормально, однако код
User.includes(:completed_tasks).find(1).completed_tasks


не возвращает ничего. При просмотре лога видно, что в SQL запросе присутствуют условия:
LEFT OUTER JOIN "tasks" ON "tasks"."id" = "users_tasks"."task_id" AND "tasks"."completed" = 'f'
WHERE "tasks"."completed" = 't' AND "users_tasks"."user_id" IN (17)


То есть defalut_scope остается для JOIN таблицы. Как верно прописать unscope для join таблицы?

Заранее спасибо.
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы