5

我的 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].

4

1 回答 1

8

你得到一个 MySQL 结果集对象,@mastertest结果集不是一个数组。

如果你正在使用mysql2,那么你应该有一个Mysql2::Result,那就是Enumerable它有一个to_a方法:

@mastertest.to_a.sort { ... }

如果您使用的是mysqlgem,那么您应该有 aMysql::Result并且您必须@mastertest手动转换为 Array:

a = [ ]
@mastertest.each { |r| a.push(...) }
a.sort { ... }

或者您可以简单地让数据库进行排序:

@mastertest = connection.execute('select code_ver, date from mastertest order by code_ver')
于 2012-10-18T18:36:47.793 回答