2013-11-02 32 views
0

我已經嘗試了幾個不同的搜索,但我不確定如何正確地將該問題說出來。想象一下,我有一個數據庫表創建遷移,看起來像這樣:將一個類序列化到一個activerecord字段中

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是類統計的一個實例

class Statistics 
    @stats = {} 

    def set(statistic, value) 
     @stats[statistic] = value 
    end 

    def to_json(options) 
     self.to_json(:only => @stats) 
    end 
end 

(或類似的東西)

最終,我想要發生的是,我想成爲能夠添加特定於統計的方法來管理該字段中的數據,但是當我保存User對象時,我希望它將統計類的該實例轉換爲JSON字符串,並將其保存在數據庫中。

我來自PHP背景,這種事情很簡單,但我很難弄清楚如何使用ActiveRecord這個工作(我沒有太多的經驗) 。

想法?

注:這不是Rails的...只是直線上升紅寶石

回答

0

你需要它是JSON?如果沒有,將其序列化到YAML將允許您輕鬆地將對象編組回原始類。

ActiveRecord::Base#serialize需要兩個參數:attributeclass。如果定義了class,則數據必須反序列化爲指定類型的對象。這是cool example of it in action

默認情況下,您的屬性將被序列化爲YAML。比方說,你 定義MyField的是這樣的:

類MyField的

將被序列化這樣的:

---紅寶石/對象:MyField的{}

它將反序列化回MyField實例。

+0

YAML也會工作。我會怎麼做呢? – Jemaclus

相關問題