我有一个rails 3.2 app,它有一个类:
class Element
serialize :body
end
在代码中如何检查属性以确定字段是文本还是序列化?然后如果序列化我需要知道它是否有
serialize :body
# vs
serialize :body, Hash
# vs
serialize :body, Array
注意:我需要从Element.new
转到具有正确类型的对象。我不只是从数据库中抓取这个对象。执行Element.new
字段将为nil
答案 0 :(得分:1)
您似乎从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