У меня есть postgres db с каждой строкой, представляющей «индекс» (просто имя не ключевое слово). Для каждого рынка существует атрибут «stats», который представляет собой двумерный массив чисел, который я помещал в db из внешнего источника.rails postgres read array out of db
create_table "indices", force: true do |t|
t.string "name", null: false
t.float "returns", default: [], array: true
t.float "navs", default: [], array: true
t.float "stats", default: [], array: true
t.string "updated_at"
t.string "created_at"
t.integer "idx_type_id"
end
Моя проблема заключается в том, как получить значения статистики из базы данных и в программу моих рельсов?
В консоли, я попытался следующий код:
a = Index.find(1)
a.name
a.stats
Это правильно получает имя атрибута, но я получаю следующее сообщение об ошибке для статов атрибутов
undefined method `to_f' for ["0.259854651130407", "0.261425018884344"]:Array
Числа, показанного внутри квадратные скобки - это значения первой строки двумерного массива. Есть идеи?
EDIT: Я запускаю рельсы 4.0.1, и вот исходная миграция для создания таблицы. Есть ли синтаксическая ошибка здесь или что-то еще?
class CreateIndices < ActiveRecord::Migration
def change
create_table :indices, {:id => false} do |t|
t.string :name
t.float :returns, array: true, default: []
t.float :navs, array: true, default: []
t.float :sharpe
t.timestamps
end
execute "ALTER TABLE indices ADD PRIMARY KEY (name);"
end
end
EDIT 2: Вот выход из следующего запроса в PSQL
запроса:
select stats from indices where id < 3
выход:
stats
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------
{{0.259854651130407,0.261425018884344},{0.114409534648231,0.113829156756227},{2.27126744225792,2.28284789710692},{0.0562802038101342,0.0561701509132937},{4.61715902819129,4.65416265816855},{0.0
92128059492271,0.0921734852013666},{2.82058096699852,2.81919090465893},{0.0292770008925915,0.0291771074372238},{8.87572644765545,8.95993612275702}}
{{0.259854651130407,0.261425018884344},{0.114409534648231,0.113829156756227},{2.27126744225792,2.28284789710692},{0.0562802038101342,0.0561701509132937},{4.61715902819129,4.65416265816855},{0.0
92128059492271,0.0921734852013666},{2.82058096699852,2.81919090465893},{0.0292770008925915,0.0291771074372238},{8.87572644765545,8.95993612275702}}
(2 rows)
Какая версия Rails это? –
i'm running rails 4.0.1 – jhlu87
Проверьте определение таблицы внутри базы данных с помощью '\ d indices' из' psql'. –