Rails 3 - unserialize仅返回ActiveRecord :: AttributeMethods :: Serialization :: Attribute

Flo*_*Eck 3 ruby serialization activerecord ruby-on-rails-3.2

我最近升级了一个旧的Rails 2.3应用程序(Ruby 1.8.7)Rails 3.2 / Ruby 1.9.3.当使用ActiveRecord序列化并尝试访问序列化属性时,我得到:

 ActiveRecord::AttributeMethods::Serialization::Attribute returned.
 .unserialize then returns the actual value.
Run Code Online (Sandbox Code Playgroud)

真正奇怪的是,有一些模型具有正常的行为.

有人能帮我吗?

Flo*_*Eck 5

我现在想出这个问题何时发生,但我仍然不知道为什么:

这有效:

User < ActiveRecord::Base
    serialize :options, Hash
end
Run Code Online (Sandbox Code Playgroud)

选项返回{}

如果我在序列化之前调用模型本身,那样:

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

  serialize :options, Hash
end
Run Code Online (Sandbox Code Playgroud)

我得到ActiveRecord :: AttributeMethods :: Serialization :: Attribute

有人有个主意吗?