ruby-on-rails – 在序列化哈希时,ActiveRecord将符号键转换为字
发布时间:2020-12-17 03:14:51 所属栏目:百科 来源:网络整理
导读:我有一个带有序列化Hash属性的Rails模型类,如下所示: class Action serialize :metadata,Hash # . . .end 该列存储在具有YAML编码的文本列中.问题是当我将元数据值传递给create时!方法,哈希键从符号转换为字符串,但该转换不会在其他时间发生.例如: $rails
我有一个带有序列化Hash属性的Rails模型类,如下所示:
class Action serialize :metadata,Hash # . . . end 该列存储在具有YAML编码的文本列中.问题是当我将元数据值传递给create时!方法,哈希键从符号转换为字符串,但该转换不会在其他时间发生.例如: $rails console > a = Action.create!(:metadata => {:foo => "bar"}) > a.metadata => {"foo"=>"bar"} > a.metadata[:fizz] = "buzz" > a.metadata => {"foo"=>"bar",:fizz=>"buzz"} 现在,当我保存模型时,数据库将具有此文本值: --- foo: bar :fizz: buzz 有任何建议如何解决这个问题? (这是使用Rails 3.0.16.) 解决方法
我自己回答这个问题,并提出@ Mori的建议:
class Action < ActiveRecord::Base def metadata=(v) self[:metadata] = v.try(:symbolize_keys!) end end 据我所知,这可以在不破坏其他地方界面的情况下解决问题.我想如果我想要一把钥匙成为一个字符串,这种方法会给我带来一个令人讨厌的惊喜,但事实并非如此,所以我比其他提议的解决方案所带来的惊喜更愿意接受它. 顺便说一句,如果有人可以提出一个根本不需要这种解决方法的解决方案,我很乐意接受这个作为正确的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Oracle SqlPlus – 将输出保存在文件中,但不会在屏幕上显示
- fastjson 过滤不需要序列化的属性
- Fusioncharts使用setDataURL()正确setDataXML()出现"In
- 在emacs中运行irb(通过run-ruby)回显我输入的所有内容
- cocos2d-x 3.x 进度条 ProgressTimer
- flex动态加载使用css文件实例
- 微信公众平台开发之发送图文消息.Net代码解析
- postgresql – 这个postgres错误是什么意思:“当函数没有返
- The introduction of Regex
- c – 摆脱有符号和无符号整数表达式之间的比较的优雅方式