1

Rubyファイルにクエリがあります:

@mastertest = connection.execute("select code_ver, date from mastertest")

@mastertest行を印刷すると、次のようになるため、2次元配列のように扱われます。

@mastertest.each do |row|
puts row[0] : row[1]
end

code_verこれにより、すべての行とdate各行が印刷されます。

他の操作はできません。配列を並べ替えることも、配列のディープコピーを実行することもできません。Rubyが考えているのはMySQL2タイプだと思います。これを通常の2次元配列に変換するにはどうすればよいですか?

4

1 に答える 1

4

@mastertestのクラスはMysql2::Result;です。それはとメソッドのみを提供しますeachfields

結果を2次元配列に変換する1つの方法の例を次に示します。

sql = "select <field1>, <field2> from <table> where <conditions>"
result_array = []

result = ActiveRecord::Base.connection.execute(sql)

index = 0 
result.each do |row|
  result_array[index] = []
  result_array[index] << row[0]
  result_array[index] << row[1]
  ...
  result_array[index] << row[n]
  ...
  index += 1
end
于 2012-10-18T19:52:49.313 に答える