說我有這個簡化的模型設置如何查找沒有關聯的數據庫記錄?
用戶:
has_many :logs
登錄:
attr_accessible :key, :value
belongs_to :user
當用戶接觸,應用程序創建了
Log.create(user: user, key: "contacted", value: "by admin")
日誌此事件
有許多其他類型的日誌,由t繼承人key
屬性值。
我想寫一個範圍,將返回所有從未聯繫過的用戶。
到目前爲止,我有
scope :never_contacted, -> { joins(:logs).where.not("logs.key = ?", "contacted").uniq }
不幸的是,這似乎只返回比「接觸」等日誌,並留下了具有完全沒有日誌的用戶。
我想有可能以「反」積極的查詢,例如
scope :contacted, -> { joins(:logs).where("logs.key = ?", "contacted").uniq }
scope :never_contacted, -> { (all - contacted) }
但我也懷疑這樣的做法是非常低效的。
是否有可能查詢沒有與「contacts」關聯的日誌作爲關鍵屬性的用戶?
此查詢不會只返回沒有日誌的用戶嗎?那些除了「聯繫」之外還有其他日誌的用戶呢? – Epigene
只需在WHERE中添加一個額外的OR條件。 –