Все привет.
Есть 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 таблицы?
Заранее спасибо.