获取没有满足特定条件的关联的记录

时间:2020-05-11 09:41:28

标签: ruby-on-rails join activerecord

我正在尝试获取与特定条件(例如特定供应商)没有关联的所有记录(证书)。

class Certificat < ApplicationRecord
  has_many :certifications
end

class Certification < ApplicationRecord
  belongs_to :supplier
  belongs_to :certificat
end

class Supplier < ApplicationRecord
  has_many :certifications, dependent: :destroy
end

我的解决方案,但结果始终为空

@certificat.left_outer_joins(:certifications).where('certifications.id IS NULL AND certifications.supplier_id = ?), supplier_id)

有什么想法可以检索没有特定供应商关联的所有证书?

1 个答案:

答案 0 :(得分:0)

在进行糊涂和大量尝试之后!

Certificat.where('NOT EXISTS (SELECT id FROM certifications WHERE certifications.certificat_id = certificats.id AND certifications.supplier_id = ? LIMIT 1)', @supplier.id) %>