0
我創建哈希的陣列結構和我創建了Postgres的一列,以節省使用遷移該結構如下如何保持陣列結構保存記錄時 - 的ActiveRecord/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,to:varchar並得到相同的結果。我發現的唯一解決方案是使用eval命令將字符串轉換回數組,這並不理想。
只是嘗試這樣做,並給了我這個 'PG :: InvalidTextRepresentation:錯誤:無效的輸入語法類型json的詳細信息:預期「:」,但找到「,」。 CONTEXT:JSON數據,第1行:...:travel_mode => \「WALKING \」,::travel_type => nil}]},...:UPDATE「calendar_events」SET「key_directions」= $ 1,「updated_at」= $ 2 WHERE「calendar_events」。「id」= $ 3' –
如果你已經在這個專欄的數據庫中有一些記錄,你必須先刪除它們。 – dnsh
我不......我的結構就是你給出的例子。 –