获取所有没有关联数据的行

Get all rows who have no associated data

广告系列具有属性 :start_date,:end_date

发票有属性:start_date,:end_date

campaign.rb

has_many:invoices

invoice.rb

belongs_to:campaign'

我想要获取所有没有发票且 end_date 早于当前日期的活动。

我这样试过

Campaign.includes(:invoices).where("compaigns.end_date > ? ",Date.today, :invoices => { :campaign_id => nil } ).count

我该怎么做?

我想你快到了。给出的示例不起作用,因为它混合了 where 的字符串和散列形式。尝试将条件分成两个 where 调用:

Campaign.includes(:invoices).
  where("campaigns.end_date > ? ",Date.today).
  where(invoices: {campaign_id: nil}).count