【问题标题】:Rails doesn't deserialize array backRails 不会反序列化数组
【发布时间】:2013-11-28 20:29:37
【问题描述】:

我遇到了序列化问题。 在我的模型中,我有

class PramEntry < ActiveRecord::Base
  serialize :pram_units_array, Array
  attr_accessible :pram_units_array
end

那我做

entry = PramEntry.new
entry.pram_units_array = [PramUnit.new(depth: 1, width: 1)]

entry.pram_units_array 
=> [#<PramUnit:0x007fb368eb8ae8 @depth=1, @width=1>]
entry.save
=> true

然后我从数据库中加载这个对象

entry = PramEntry.first
entry.pram_units_array
=>  "---\n- &70364639756800 !ruby/object:PramUnit\n  depth: 1\n  width: 1\n  errors: !ruby/object:ActiveModel::Errors\n    base: *70364639756800\n    messages: !omap []\n  validation_context: \n"

它不会将它从 yaml 序列化回来。我做错了什么?提前致谢!

【问题讨论】:

    标签: ruby-on-rails serialization


    【解决方案1】:

    我找到了我的问题的答案。

    我尝试过手动反序列化

    YAML::load(PramEntry.last.pram_units_array)
    => ArgumentError: undefined class/module PramUnit
    

    PramUnit 是 lib 文件夹中的一个 ruby​​ 类。我需要它

    require 'pram_unit'
    

    即使我从 lib 自动加载文件。

     config.autoload_paths += Dir["#{config.root}/lib/**/"]
    

    这对我来说是非常奇怪的行为。但是问题已经解决了:)

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 2015-03-31
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 2014-06-30
      • 2015-02-10
      相关资源
      最近更新 更多