协会
Budget
has_many :approvers
Approver
belongs_to :budget
要求
在其他世界(假设有3个预算)
我有以下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?
任何建议都值得赞赏。
注意:我正在尝试检查是否有预算(数千个预算中)是否有未分配批准者的预算。
答案 0 :(得分:1)
all_budgets_with_no_approvers = Budget.joins('left outer join approvers on budget.id = approvers.budget_id').where(approvers: { budget_id: nil })
这将返回所有未分配批准者的预算。