Как получить строки в виде массивов (не хэшей) в ORM Sequel?

В Sequel ORM для Ruby класс Dataset имеет метод all , который создает массив хэшей строк: каждая строка представляет собой хэш с именами столбцов в качестве ключей.

Например, для таблицы T:

a  b   c
--------------
0  22  "Abe"
1  35  "Betty"
2  58  "Chris"

тогда:

ds = DB['select a, b, c from T']
ah = ds.all # Array of row Hashes

должен произвести:

[{"a":0,"b":22,"c":"Abe"},{"a":1,"b":35,"c":"Betty"},{"a":2,"b":58,"c":"Chris"}]

Есть ли встроенный способ для В дальнейшем вместо этого создается массив массивов строк, где каждая строка представляет собой массив только значений в каждой строке в порядке, указанном в запросе ? Вроде как select_rows работает в ActiveRecord? Примерно так:

aa = ds.rows # Array of row Arrays

, что даст:

[[0,22,"Abe"],[1,35,"Betty"],[2,58,"Chris"]]

Примечание: выражение:

aa = ds.map { |h| h.values }

создает массив массивов, но порядок значений в строках НЕ гарантированно соответствует порядку, запрошенному в исходном запросе. В этом примере aa может выглядеть так:

[["Abe",0,22],["Betty",1,35],["Chris",2,58]]

6
задан jwfearn 22 April 2011 в 18:22
поделиться