ассоциация
Budget
has_many :approvers
Approver
belongs_to :budget
требование
В других мирах (скажем, есть 3 бюджета)
У меня есть код ruby, который вызывает проблему с производительностью, я хочу изменить это на эквивалентный SQL или ActiveRecord Statement:
Проблемный код
budgets.archived(false).includes(:approvers).select do |b| b.approvers.empty? end.any?
Мое решение, которое не дает правильного результата
budgets
.archived(false)
.where("not exists (select 1 from approvers where approvers.budget_id = budgets.id)")
.any?
Любое предложение приветствуется.
ПРИМЕЧАНИЕ. Я пытаюсь проверить, есть ли какой-либо из бюджетов (в тысячах бюджета), если есть бюджет, который не присвоен ему.
all_budgets_with_no_approvers = Budget.joins('left outer join approvers on budget.id = approvers.budget_id').where(approvers: { budget_id: nil })
Это приведет к возврату всех бюджетов без выделения ассигнований.