我尝试了一些不同的搜索,但我不确定如何正确地说出问题。想象一下,我有一个db表创建迁移,如下所示:
def self.up
create_table :users do |t|
t.string :name, :null => false,
t.text :statistics
end
end
示例用户类
class User
serialize :statistics, JSON
def statistics
self.statistics
end
end
但我希望self.statistics成为类Statistics的实例
class Statistics
@stats = {}
def set(statistic, value)
@stats[statistic] = value
end
def to_json(options)
self.to_json(:only => @stats)
end
end
(或类似的东西)
最终,我想要发生的是我希望能够添加特定于Statistics的方法来管理该字段中的数据,但是当我保存User对象时,我希望它转换该Statistics类的实例转换为JSON字符串,保存在数据库中。
我来自PHP背景,这种事情非常简单,但我很难弄清楚如何使用ActiveRecord(我没有太多经验)。
想法?
注意:这不是Rails ......只是直接的Ruby
答案 0 :(得分:0)
你需要它是JSON吗?如果没有,将它序列化为YAML将允许您轻松地将对象编组回原始类。
ActiveRecord::Base#serialize有两个参数:attribute
和class
。如果定义了class
,则数据必须反序列化为指定类型的对象。这是一个cool example of it in action。
默认情况下,您的属性将序列化为YAML。我们说你 像这样定义MyField:
类MyField
端
它会像这样序列化:
---!ruby / object:MyField {}
它将反序列化回MyField实例。