В 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]]