【发布时间】:2017-02-15 04:16:37
【问题描述】:
我创建了一个哈希数组结构,并在 postgres 中创建了一个列以使用下面的迁移来保存该结构
class AddKeyDirectionsToEvent < ActiveRecord::Migration[5.0]
def change
add_column :calendar_events, :key_directions, :text, array:true, default: []
end
end
现在,数组的结构是下面那个
{
:in => [
[0] {
:duration => "5 mins",
:distance => "0.4 km",
:travel_mode => "WALKING",
:travel_type => nil
},
[1] {
:duration => "12 mins",
:distance => "5.3 km",
:travel_mode => "TRANSIT",
:travel_type => "SUBWAY"
},
[2] {
:duration => "9 mins",
:distance => "0.7 km",
:travel_mode => "WALKING",
:travel_type => nil
}
]
}
{
:out => [
[0] {
:duration => "10 mins",
:distance => "0.7 km",
:travel_mode => "WALKING",
:travel_type => nil
},
[1] {
:duration => "12 mins",
:distance => "5.3 km",
:travel_mode => "TRANSIT",
:travel_type => "SUBWAY"
},
[2] {
:duration => "6 mins",
:distance => "0.4 km",
:travel_mode => "WALKING",
:travel_type => nil
}
]
}
但由于某种原因在数据库中它是这样保存的
["{:in=>[{:duration=>\"5 mins\", :distance=>\"0.4 km\", :travel_mode=>\"WALKING\", :travel_type=>nil}, {:duration=>\"12 mins\", :distance=>\"5.3 km\", :travel_mode=>\"TRANSIT\", :travel_type=>\"SUBWAY\"}, {:duration=>\"9 mins\", :distance=>\"0.7 km\", :travel_mode=>\"WALKING\", :travel_type=>nil}]}", "{:out=>[{:duration=>\"10 mins\", :distance=>\"0.7 km\", :travel_mode=>\"WALKING\", :travel_type=>nil}, {:duration=>\"12 mins\", :distance=>\"5.3 km\", :travel_mode=>\"TRANSIT\", :travel_type=>\"SUBWAY\"}, {:duration=>\"6 mins\", :distance=>\"0.4 km\", :travel_mode=>\"WALKING\", :travel_type=>nil}]}"]
任何想法为什么?我尝试将数组类型从 :text 更改为 :varchar 并得到相同的结果。我找到的唯一解决方案是使用 eval 命令将字符串转换回数组,这并不理想。
【问题讨论】:
标签: ruby-on-rails arrays postgresql activerecord