ruby-on-rails – 使用默认值和新对象的Rails序列化
发布时间:2020-12-17 02:13:35 所属栏目:百科 来源:网络整理
导读:另一个铁路 serialization问题.我已经阅读了很多这些,但找不到我的问题的答案,所以这里是: 我有典型的: class User ActiveRecord::Base serialize :prefs,Hash 在我的迁移中(感谢this问答): add_column :user,:prefs,:text,default: { foo: 'bar' }.to_ya
另一个铁路
serialization问题.我已经阅读了很多这些,但找不到我的问题的答案,所以这里是:
我有典型的: class User < ActiveRecord::Base serialize :prefs,Hash 在我的迁移中(感谢this问答): add_column :user,:prefs,:text,default: { foo: 'bar' }.to_yaml 现在,当我加载现有用户时:prefs被反序列化: User.first.prefs[:foo] # returns 'bar' User.first.prefs.class # returns Hash User.first.prefs # returns {:foo => "bar"} 所以它完美无缺!但是当我创建一个新的: User.new.prefs[:foor] # TypeError: can't convert Symbol into Integer User.new.prefs.class # returns String User.new.prefs # returns "---n:foo: barn" 是否可以在没有任何这些的情况下使其工作? > after_initialize:方法 我真的想让它只使用数据库默认.难道我做错了什么? 解决方法
当我在Rails控制台(Rails 3.2.6,Ruby 1.9.3-p194)中执行以下操作时:
u=User.new(:prefs=>{:foo2=>"bar2"}) 我回来了: => #<User id: nil,name: nil,prefs: {:foo2=>"bar2"},created_at: nil,updated_at: nil> 所以我认为这是你想要的语法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |