2013-03-23 162 views
3

我最近將舊的Rails 2.3應用程序(Ruby 1.8.7)升級爲Rails 3.2/Ruby 1.9.3。當使用ActiveRecord的序列化和試圖訪問一個序列化的屬性,我得到:Rails 3 - 反序列化僅返回ActiveRecord :: AttributeMethods ::序列化::屬性

ActiveRecord::AttributeMethods::Serialization::Attribute returned. 
.unserialize then returns the actual value. 

真正奇怪的是,有一個某些型號具有一種正常的行爲。

有人可以幫助我嗎?

回答

5

我現在想通了,當這個問題發生,但我仍然不知道爲什麼:

這工作:

User < ActiveRecord::Base 
    serialize :options, Hash 
end 

選項返回{}

如果我叫模型本身連載之前,這樣的:

User < ActiveRecord::Base 
    USER_LIST = User.all.map {|u| [u.name, u.id]} 

    serialize :options, Hash 
end 

我得到ActiveRecord :: AttributeMethods ::序列化::屬性

有人有個想法嗎?

+0

確認可能需要在模型定義的頂部調用serialize – aceofspades 2013-08-03 21:42:01

+0

我也被燒掉了。澄清一下,似乎'serialize'不一定是類聲明下的第一行,但它必須在模型中的其他內容調用ActiveRecord調用之前調用。 – 2013-08-12 20:11:19

相關問題