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