2013-11-28 76 views
1

我有一個序列化問題。 在我的模型我有Rails並不反序列化陣列

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序列化回來。我做錯了什麼?提前致謝!

回答

1

我找到了回答我的問題。

我試圖反序列化manualy

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/**/"] 

這對我來說是非常奇怪的行爲。但問題解決了:)