read_attribute_before_type_cast似乎不适用于序列化:

时间:2011-12-28 15:10:34

标签: ruby-on-rails-3 activerecord

我的Rails应用程序中有以下模型,它使用带有JSON编解码器的序列化。我的数据库列的类型为“text”

class Sample < ActiveRecord::Base
  serialize :face_detect, JSON
end

当我在rails控制台中运行以下内容时

Sample.first.read_attribute_before_type_cast('face_detect').class

我期待一个'String'类,因为我期望'before_type_cast',也意味着在序列化之前,但我得到了'Hash'类。这怎么可能?

(使用rvm,带有rails(3.1.3)的ruby-1.9.2-p290和Mac OSX上的postgresql)

2 个答案:

答案 0 :(得分:4)

序列化在Arel内部发生得非常深刻,但我可以像这样访问预序列化的值:

@sample.instance_variable_get("@attributes")["face_detect"].serialized_value

答案 1 :(得分:1)

对于Rails 4:

@attributes['data'].serialized_value