首页 > 解决方案 > Ruby on Rails 难查询

问题描述

我需要创建困难的查询,但我不明白如何以更有效的方式做到这一点。

情况如下:

class Owner
  has_many: A
end

class A
  has_many: C
end

# category: string
class B
  has_many: C
end

# flag: boolean
class C
  belongs_to: A
  belongs_to: B

  scope :filtered, -> { where(b: { category: 'smth' }) }
end

我需要获取属于特定所有者的所有 A 记录,但以下人员除外:

a.c.filtered.last.flag == true

acfiltered 可以为空,ac 可以为空,在这种情况下我不需要排除这样的 A 记录。

当然,我可以在 for 循环中做到这一点,但是我的记录太多,我认为这不是一种有效的方式。

标签: sqlruby-on-railsrails-activerecord

解决方案


这样的事情应该有效吗?

A.where(c: C.filtered.where(flag: true)) 

推荐阅读