我正在將rails 4.2應用程序升級到rails 5.其中一個模型使用ActiveRecord :: Store。升級後檢索記錄時,該商店只返回一個空的散列。我不知道爲什麼會發生這種情況,並且無法在變更日誌中找到任何內容。所以任何幫助和解釋將不勝感激。Activerecord商店只在rails 5升級後返回空散列
這裏的鐵軌輸出4控制檯:
=> #<StoredDataQuery ..., config: {"start_date"=>6, "end_date"=>0, ...>
和軌道5:
=> #<StoredDataQuery ..., config: {}, ...
的psql輸出:
development=# SELECT config FROM stored_data_queries WHERE id=1;
config
---------------------------------------------
--- !ruby/hash:ActionController::Parameters+
start_date: 6 +
end_date: 0 +
interval: day +
(1 row)
縱觀SQL輸出,我懷疑它有som數據被序列化爲ActionController::Parameters
。
感謝您的幫助!
更新:經過幾次實驗後,我發現rails 5將對象存儲爲'ActiveSupport :: HashWithIndifferentAccess'。所以現在的問題是,是否有比原始sql更好的方式來轉換存儲的對象。 –
這裏是如何解決它在sql(postgres)'UPDATE stored_data_queries SET config = replace(config,'ActionController :: Parameters','ActiveSupport :: HashWithIndifferentAccess');' –