2016-08-04 77 views
0

我有一个Rails 3.2的应用程序,有一类:确定属性已系列化轨道

class Element 
    serialize :body 
end 

在代码中我该如何检查属性,以确定现场是文本或序列化?然后,如果序列化,我需要知道它是否有

serialize :body 
    # vs 
    serialize :body, Hash 
    # vs 
    serialize :body, Array 

注:我需要从Element.new去的对象具有正确的类型。我不只是从数据库中抓取这个对象。这样做Element.new领域将是nil

回答

0

貌似你serialized_attributes

开始那么,如果该字段有一个序列化的领域这将是一个哈希并因此object_class回应。 COOL

(dev)> Element.serialized_attributes 
    => {"value"=>#<ActiveRecord::Coders::YAMLColumn:0x007ffcb30a9f08 @object_class=Object>, "body"=>#<ActiveRecord::Coders::YAMLColumn:0x007ffcb3096818 @object_class=Object>} 

(dev)> Element.serialized_attributes['value'] 
    => #<ActiveRecord::Coders::YAMLColumn:0x007ffcb3213010 @object_class=Array> 
(dev)> Element.serialized_attributes['value'].try(:object_class) 
    => Array