我正在将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');' –