给定ActiveRecord Model Foo
,其字段a_of_i
为整数数组:
# Foo:
id, a_of_i
101, [1,2,3,4]
102, []
103, [11, 12, 13, 14, 15, 16]
104, [1, 2, 52, 53]
是否有一个ActiveRecord查询将按数组列中#elements的计数进行分组,例如产生:
# Foo.some_query returns something like [[count, id], [count, id]...]
=> [ [6, 103], [4, 101], [4, 104], [0, 102] ]
# or perhaps, if easier:
=> { 6 => [103], 4 => [101,104], 0 => [102] }
扰流板
Foo.select('id, cardinality(a_of_i)').pluck('cardinality(a_of_i)', :id)
建立表格
CREATE TABLE foos(
id text,
a_of_i integer[]
);
将表填入红宝石
Foo.create id: 101, a_of_i: [1,2,3,4]
Foo.create id: 102, a_of_i: []
Foo.create id: 103, a_of_i: [11, 12, 13, 14, 15, 16]
Foo.create id: 104, a_of_i: [1, 2, 52, 53]
在SQL中思考
SELECT
id,
CARDINALITY( a_of_i )
FROM
foos
带AR
Foo.select('id, cardinality(a_of_i)').pluck('cardinality(a_of_i)', :id)
退货
[[4, 101], [0, 102], [6, 103], [4, 104]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句