1

我的 Ruby 文件中有一个查询:

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

@mastertest它像二维数组一样对待,因为当我打印行时,我得到:

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

这将打印所有内容code_verdate每一行。

我无法对其执行任何其他操作。我无法对数组进行排序,也无法执行数组的深拷贝。我猜这是Ruby考虑的某种MySQL2类型。如何将其转换为普通的二维数组?

4

1 回答 1

4

@mastertest 的类是Mysql2::Result; 它只提供eachfields方法

这是将结果转换为二维数组的一种方法的示例:

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 回答