首页 文章

无法使用序列化字段初始化模型

提问于
浏览
0

我最近为我的用户添加了一个'preferences'字段,它在我的rails应用程序中使用了一些ActiveRecord序列化方法 . 这适用于现有用户,但是当我尝试在控制台中初始化新用户模型时,我收到一个错误:

u = User.new
#=> 
ActiveRecord::SerializationTypeMismatch: preferences was supposed to be a Hash, but was a String

我在迁移中添加了这样的字段:

add_column :users, :preferences, :text, :default => { :allows_public_contributions => false }.to_yaml

在模型中,user.rb:

serialize :preferences, Hash

有任何想法吗?

1 回答

  • 2

    Rails自己处理序列化 . 从迁移中的默认选项中删除 to_yaml 方法调用 . 如果在哈希上运行此方法,则会得到一个字符串 .

    { :key => "value" } 
    # => "---\n:key: value\n"
    

    这就是你得到例外的原因 .

相关问题