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