【发布时间】:2018-02-28 14:04:47
【问题描述】:
我有以下设置:
class Company
has_many :users
end
class User
belongs_to :company
end
我需要获取所有没有特定名称用户的公司,让它成为“大卫”。
反之亦然,查找所有拥有名为 David 的用户的公司:
Company.joins(:users).where(users: { name: 'David' }).distinct
但我不知道如何在一个 SQL 请求中完成原始任务。 我试过这个:
Company.joins(:users).where.not(users: { name: 'David' }).distinct
但它并没有像我想象的那样工作。
所以我做了一个原始的 SQL 解决方案,查询是:
"SELECT companies
FROM companies
WHERE NOT EXISTS
(SELECT users
FROM users
WHERE users.company_id = companies.id
AND users.name = 'David')"
所以我想知道是否有办法以 rails 方式执行此任务,使用连接和 where 方法,或者可能还有 EXISTS 的方法。
【问题讨论】:
标签: sql ruby-on-rails ruby activerecord exists