1
我正在升級Rails 3項目到Rails 4,它打破了我的一個使用ActiveRecord Store屬性的模型。我的模型如下所示:在rails 4.2中的ActiveRecord商店屬性打破序列化
class ModelClass < ActiveRecord::Base
attr_accessible :attr_1, ..., attr_n, as: :admin
store :properties, accessors: [:attr_1, ..., :attr_n], coder: JSON
end
的:properties
場是Postgres的文本字段。
,當我嘗試訪問在這個模型中,我得到的數據可以JSON::ParserError
:
795: unexpected token at '{"attr_1"=>"", ..., "attr_n"=>""}'
這些記錄是在Rails 3中所有創建的,之前升級到Rails 4我的模型類沒有coder: JSON
在store
呼叫的末尾。它看起來像數據庫中的數據沒有正確序列化,任何人都不知道爲什麼以及如何解決它?是否因爲我的數據看起來像數據庫中的=>
散列火箭的紅寶石散列?
它仍然會以文本形式存儲在數據庫中嗎?當我添加新記錄時,他們現在會以正確的json格式存儲嗎? – azrosen92
它將被存儲爲文本是。如果你能夠在數據庫級別上使用json數據類型,那麼它會更好(你不需要'store'序列化,而是'store_accessor'來讀取數據) – jazzytomato
我在猜測這是行不通的,因爲ModelClass會在每行加載時將'properties'解析爲JSON。我認爲你需要完全繞過模型,並使用直接數據庫調用手動進行格式轉換。 –