2016-08-04 83 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