我有两个与同一个数据库通信的应用程序。一个是 Ruby on Rails 应用程序,另一个是用 Ruby 编写的控制台应用程序。
在 Rails 应用程序中,我保存了一组设置,这些设置保存到名为“notification_settings”的列中。我的模型中有以下内容;
serialize :notification_settings, Hash
这会导致列中的值按原样存储
--- !map:ActiveSupport::HashWithIndifferentAccess
test: !map:ActiveSupport::HashWithIndifferentAccess
email: "1"
ETC
当我在我的 Ruby 应用程序中做同样的事情时,哈希只是简单地保存为普通哈希。即使我做类似的事情;(在我的 Ruby 应用程序 model.rb 中)
hash = HashWithIndifferentAccess.new(self.notification_settings)
hash[:test][:email] = 0
self.update_attribute(:notification_settings, hash)
如何让 Ruby 应用程序以与 Rails 应用程序保存记录完全相同的方式 (HashWithIndifferentAccess) 保存记录?