如何在ActiveRecord中重新创建此查询

时间:2012-03-08 15:29:54

标签: mysql ruby-on-rails activerecord

我知道这听起来像是“为我做功课”的问题,但我一直在努力用ActiveRecord重新创建这个查询一段时间,现在我想知道是否可以这样做而不使用{{1 }}

结构基本上是:

ActiveRecord::Base.connection.execute

我需要显示已下订单的所有成员,订单总金额以及按总金额排序的给定日期范围的交易数量。

我可以使用以下查询获取所需的数据:

Member has_many orders and transactions

是否可以通过ActiveRecord制定此查询?

1 个答案:

答案 0 :(得分:2)

这就是我通过ActiveRecord执行此操作的方法:

Member.includes(:orders, :transactions).select("SUM(orders.amount) as total_amount").where("orders.created_at BETWEEN '2012-03-01' AND '2012-04-01'").group('members.id').order('total_amount DESC')

这包括许多原始SQL代码段。如果要用实际的Ruby代码替换那些,可以通过创造性地使用Member.arel_table来实现。有关如何执行此操作的信息,请参阅the Arel documentation