我的ruby文件中有一个查询:
@mastertest = connection.execute("select code_ver,date from mastertest")
我打印查询结果如下:
@mastertest.each do |row|
puts row[0] : row[1]
end
这将打印所有code_ver
和'日期',如下所示
2.0 : 2012/12/10
3.1 : 2012/11/03
2.5 : 2012/07/08
1.8 : 2012/12/11
2.5 : 2012/03/01
现在我想根据我的code_ver
对这个数组进行排序,但问题是ruby不认为这是一个数组,它说它是一些mysql2类型。
如何进一步处理?我想要将这个东西转换成二维数组,或者我想根据row[0]
对它进行排序。
答案 0 :(得分:8)
您在@mastertest
中获取了MySQL结果集对象,结果集不是数组。
如果您使用的是mysql2
,那么您应该拥有Mysql2::Result
而Enumerable
,因此它有to_a
方法:
@mastertest.to_a.sort { ... }
如果您使用的是mysql
gem,那么您应该拥有Mysql::Result
,并且必须手动将@mastertest
转换为数组:
a = [ ]
@mastertest.each { |r| a.push(...) }
a.sort { ... }
或者你可以简单地让数据库进行排序:
@mastertest = connection.execute('select code_ver, date from mastertest order by code_ver')