Atr*_*tri 3 arrays sqlite activerecord group-by ruby-on-rails
我在rails中有以下查询:
records = Record.select('y_id, source')
                .where(:source => source, :y_id => y_id)
                .group(:y_id, :source)
                .having('count(*) = 1')
如果我得到以下输出puts records:
[#<Record source: "XYZ", y_id: 10000009>, #<Record source: "XYZ", y_id: 10000070>]
看起来输出数组中有2个元素。但是当我尝试做时,records.size我得到:
{[10000009, "XYZ"]=>1, [10000070, "XYZ"]=>1}
当记录是具有2个元素的数组时,为什么不
records.size打印2?group by查询结果是否由于某些原因而有所不同?
我应该怎么做才能得到
records
我可能走错了路,但我认为问题在于.size工作方式。
大小会自动尝试确定是致电.count还是.length。它们的行为方式如下:
但是,偶尔.size会返回哈希值(因为它决定使用.count)
因此,您的解决方案可能是使用.length它将返回整数的方法。