我继承了另一个程序员的 Rails3 项目,而且我对 Rails 总体来说还很陌生。他有一个查询,似乎按特定 ID 排序。有人可以解释这在实际 SQL 中是如何解决的吗?我认为这段代码正在杀死 db 并随后杀死 rails。我试图在记录器中输出它,但即使配置设置为:debug,似乎也无法输出实际的 SQL。在这里(在 SO 上)进行大量搜索并没有清楚地解释这个查询的外观。代码如下所示:
options = {
select: "SUM(1) AS num_demos, product_id ",
group: "product_id",
order: "num_demos ASC",
}
product_ids = Demo.where("state = 'waitlisted'").find(:all, options).collect{|d| d.product_id}
sort_product_ids = product_ids.collect{|product_id| "id = #{product_id}"}
Product.where(visible: true, id: product_ids).order(sort_product_ids.join(', '))
据我所见,最后一行将使用 ORDER BY "id = 1, id = 3, ..." 等创建针对产品表的查询,这对我来说没有多大意义。所有线索表示赞赏。