0

我尝试了一些不同的搜索,但我不确定如何正确地表达这个问题。想象一下,我有一个如下所示的 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

(或类似的东西)

最终,我希望能够添加特定于统计的方法来管理该字段中的数据,但是当我保存用户对象时,我希望它将统计类的实例转换为 JSON字符串,保存在数据库中。

我来自 PHP 背景,这种事情很容易,但我很难弄清楚如何使用 ActiveRecord 进行这项工作(我没有太多经验)。

想法?

注意:这不是 Rails ......只是直接的 Ruby

4

1 回答 1

0

你需要它是JSON吗?如果没有,将其序列化为 YAML 将允许您轻松地将对象编组回其原始类。

ActiveRecord::Base#serialize有两个参数:attributeclass. 如果class已定义,则数据必须反序列化为指定类型的对象。这是一个很酷的例子

默认情况下,您的属性将被序列化为 YAML。假设您这样定义 MyField:

类 MyField

结尾

它将像这样被序列化:

--- !ruby/object:MyField {}

它将反序列化回 MyField 实例。

于 2013-11-03T01:31:37.187 回答