Rails包含多个条件

时间:2017-11-16 16:37:12

标签: ruby-on-rails eager-loading

我们说我有这种关系:

Users has_many Orders, Visits

对于每个用户,我想组成一个这样的对象:

{Name: user.name, Orders: user.orders, Visits: user.visits}

我想限制对去年发生的访问,以及对过去一个月发生的访问。现在我正在尝试使用此查询:

Users.includes(:Visits, :Orders).where('Visit.occurred_on > ?', 1.year.ago)
                                .where('Order.date > ?', 1.month.ago)
                                .references(:Visits, :Orders)

问题是,这只返回那些满足条件的用户,因为在外连接之后应用了条件。有没有办法只包括我正在寻找的记录?

1 个答案:

答案 0 :(得分:0)

您可以像这样更改查询:

Users.includes(:Visits, :Orders).where('Visit.occurred_on > ? AND Order.date > ?', 1.year.ago, 1.month.ago)

让我知道这对你有用。

  

注意:查询未经过测试