【发布时间】:2015-07-02 18:39:41
【问题描述】:
我有两种模式:就业和电子邮件。就业 has_many :emails 和 Email belongs_to :employment.
我需要找到没有工作电子邮件的工作。
这意味着我需要找到与 deactivated_on 不为零的相关电子邮件的工作,并且也没有 deactivated_on 为 nil 的相关电子邮件。 (deactivated_on 是一个日期)
我可以找到所有带有 deactivated_on 为 nil 的电子邮件的工作,然后在 ruby 中遍历每个工作的电子邮件,以仅返回没有 deactivated_on 为 nil 的电子邮件的工作。但我希望必须有一种方法可以编写实现此结果的查询。
如有必要,我对 ActiveRecord 或原始 sql 持开放态度。
我目前有:
class Employment < ActiveRecord::Base
has_many :emails
def no_working_emails
joins(:emails).where.not(emails: { deactivated_on: nil }).uniq
end
end
这会导致与 deactivated_on 为 nil 的电子邮件以及 deactivated_on 不为 nil 的电子邮件相关联的就业对象。
我需要删除也有 deactivated_on 不为零的电子邮件的工作。
我一直在研究 group 和 having 或使用 from 的子查询。但到目前为止,我无法摆脱那些拥有活跃电子邮件地址的工作。
【问题讨论】:
标签: sql ruby-on-rails ruby postgresql activerecord