ActiveRecord 查询以查找过去 3 个月内未购买的所有用户

KJF*_*KJF 1 activerecord ruby-on-rails arel ruby-on-rails-3

我有一个具有关联购物车的用户模型。每个购物车都有一个 purchase_at 日期时间列。我想选择过去 3 个月内没有购买过购物车的所有用户。

我虽然简单:

User.joins(:carts).where('not carts.purchased_at < ?', 3.months.ago)
Run Code Online (Sandbox Code Playgroud)

可以解决问题,但情况似乎并非如此。我正在返回过去 3 个月内购买过东西的用户记录。

有什么想法吗?

cde*_*ers 5

您应该能够在简单的活动记录中做到这一点:

User.joins(:carts)
  .group("users.id")
  .having("MAX(carts.purchased_at) < ?", 3.months.ago)
Run Code Online (Sandbox Code Playgroud)