0

我升級我的Rails 3應用程序軌道4並根據指導我刪除了這條線從我的模型如何遷移字符串數據類型hstore

serialize :my_serialized_column, ActiveRecord::Coders::Hstore.new({}) 

,但現在我得到的錯誤,而循環在:my_serialized_column這是以前哈希

未定義的方法`每個」爲‘’:字符串

現在我的問題是我如何改變data_ty我的專欄的PE,而不會丟失數據我已經有

+0

你有hstore在rails 3中? Rails 4仍然有hstore。爲什麼要遷移到不同的列類型? – BigRon

+0

在rails 3列數據類型是'string'我們正在序列化列 –

回答

0

所以,你可以從剛剛改變string列的數據類型hstore

有一點要記住的是,你需要轉換的數據hstore或者您將收到以下錯誤

PG::DatatypeMismatch: ERROR: column "my_serialized_column" cannot be cast automatically to type hstore 
HINT: You might need to specify "USING my_serialized_column::hstore". 

爲了避免錯誤,您可以指定鑄造

class ChangeMySerializedColumnTypeToHstore < ActiveRecord::Migration 
    def up 
    change_column_null :my_table, :my_serialized_column, '' 
    change_column :my_table, :my_serialized_column, "hstore USING my_serialized_column::hstore" 
    end 

    def down 
    change_column :my_table, :my_serialized_column, :string, default: '' 
    end 

end 
相關問題