我知道这听起来像是“为我做功课”的问题,但我一直在努力用ActiveRecord重新创建这个查询一段时间,现在我想知道是否可以这样做而不使用{{1 }}
结构基本上是:
ActiveRecord::Base.connection.execute
我需要显示已下订单的所有成员,订单总金额以及按总金额排序的给定日期范围的交易数量。
我可以使用以下查询获取所需的数据:
Member has_many orders and transactions
是否可以通过ActiveRecord制定此查询?
答案 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。