ActiveRecord组和计数-计数id来自哪里?
我有ActiveRecord组和计数-计数id来自哪里?,activerecord,Activerecord,我有订单和项目模型,它们由订单项目加入: class OrderItem < ActiveRecord::Base belongs_to :order belongs_to :item 这是可行的,但是什么是count\u id?为什么这样做有效?这里在幕后使用的是order(“count\u id…?count\u id是Rails为SQL聚合函数提供的别名count(“order\u items”。.id”) OrderItem.group(:item\u id).count
订单
和项目
模型,它们由订单项目
加入:
class OrderItem < ActiveRecord::Base
belongs_to :order
belongs_to :item
这是可行的,但是什么是
count\u id
?为什么这样做有效?这里在幕后使用的是order(“count\u id…
?count\u id
是Rails为SQL聚合函数提供的别名count(“order\u items”。.id”)
OrderItem.group(:item\u id).count(:id)
统计每个项目的行数:
SELECT COUNT("order_items"."id") AS count_id, item_id AS item_id FROM "order_items" GROUP BY item_id
count\u id
部分背后的魔力在于。别名在此处确定:
aggregate_alias = column_alias_for([operation, column_name].join(' '))
列表的列的方法注释显示了以下示例:
# column_alias_for("count", "id") # => "count_id"
然后,order
从最大到最小列出项目出现次数。返回值将是一个散列,其中键是项目ID,值是出现次数
first
获取出现次数最多的10个项目,然后map
提取item\u id
值
# column_alias_for("count", "id") # => "count_id"