Ассоциация
Budget
has_many :approvers
Approver
belongs_to :budget
Требование
- проверить, есть ли в бюджетах неназначенные утверждающие лица.
В других мирах (допустим, есть 3 бюджета)
- если все 3 бюджета имеют Approvers_count> 0, он должен вернуть false.
- Если у какого-либо из этих бюджетов есть Approvers_count <= 0, тогда он должен вернуть true. </li>
У меня следующий код ruby, который вызывает проблемы с производительностью, я хочу изменить его на эквивалентный оператор SQL или ActiveRecord:
Код проблемы
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?
Любое предложение приветствуется.
ПРИМЕЧАНИЕ. Я пытаюсь проверить, существует ли какой-либо из бюджетов (среди тысяч), если есть бюджет, которому не назначен утверждающий.