我的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)
答案 0 :(得分:4)
序列化在Arel内部发生得非常深刻,但我可以像这样访问预序列化的值:
@sample.instance_variable_get("@attributes")["face_detect"].serialized_value
答案 1 :(得分:1)
对于Rails 4:
@attributes['data'].serialized_value