ruby-on-rails – 使用默认值和新对象的Rails序列化

ruby-on-rails – 使用默认值和新对象的Rails序列化,第1张

概述另一个铁路 serialization问题.我已经阅读了很多这些,但找不到我的问题的答案,所以这里是: 我有典型的: class User < ActiveRecord::Base serialize :prefs, Hash 在我的迁移中(感谢this问答): add_column :user, :prefs, :text, default: { foo: 'bar' }.to_yaml 现 另一个铁路 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 HashUser.first.prefs       # returns {:foo => "bar"}

所以它完美无缺!但是当我创建一个新的:

User.new.prefs[:foor]  # TypeError: can't convert Symbol into IntegerUser.new.prefs.class   # returns StringUser.new.prefs         # returns "---\n:foo: bar\n"

是否可以在没有任何这些的情况下使其工作?

> after_initialize:方法
>像default_value_for这样的宝石
>重写初始化

我真的想让它只使用数据库默认.难道我做错了什么?

解决方法 当我在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>

所以我认为这是你想要的语法.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 使用默认值和新对象的Rails序列化全部内容,希望文章能够帮你解决ruby-on-rails – 使用默认值和新对象的Rails序列化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1272811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存