【发布时间】:2018-12-11 13:34:02
【问题描述】:
协会
Budget
has_many :approvers
Approver
belongs_to :budget
要求
- 检查任何预算是否有未分配的审批者。
在其他世界(假设有 3 个预算)
- 如果所有 3 个预算的approvers_count > 0,它应该返回false。
- 如果该预算中的任何一个的approvers_count
我有以下 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?
欢迎提出任何建议。
注意:我正在尝试检查是否有任何预算(在数千个预算中)是否有未分配审批者的预算。
【问题讨论】:
标签: mysql sql ruby-on-rails postgresql activerecord