gpt4 book ai didi

ruby-on-rails - 带有默认值和新对象的 Rails 序列化

转载 作者:行者123 更新时间:2023-12-03 16:19:28 25 4
gpt4 key购买 nike

另一个 rails 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: bar\n"

如果没有这些,是否有可能让它工作?
  • after_initialize :method
  • default_value_for 的 gem
  • 覆盖 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>

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

    关于ruby-on-rails - 带有默认值和新对象的 Rails 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530900/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com