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タイプであると言っていることです。

どうすればさらに先に進むことができますか?これを2次元配列に変換するか、に基づいて並べ替えますrow[0]

4

1 に答える 1

8

MySQL 結果セット オブジェクトを取得していますが@mastertest、結果セットは配列ではありません。

を使用している場合はmysql2、 が必要です。Mysql2::ResultつまりEnumerableto_aメソッドがあります。

@mastertest.to_a.sort { ... }

mysqlgemを使用している場合は、 が必要であり、手動で配列Mysql::Resultに変換する必要があります。@mastertest

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 に答える