我有一个记录表,其中包含名为 item_id 和键的列。Item_id 是指向名为 Item 的表的外键。活动模型定义如下所示:
class Record < ActiveRecord::Base
belongs_to :item
end
class Item < ActiveRecord::Base
has_many :records
end
现在我想用不同的键计算每个项目有多少条记录,结果应该是这样的
{
#<Item id: 1, ...> => 19,
#<Item id: 2, ...> => 6,
#<Item id: 3, ...> => 21,
#<Item id: 4, ...> => 33,
}
我可以用 Hash 对象计数在两行中做到这一点:
records = Record.select('DISTINCT item_id, key').includes(:item)
records.each_with_object(Hash.new 0) { |e, a| a[e.item] += 1 }
我想知道是否可以使用纯活动记录查询或 SQL 语句来实现。