2011-09-25 33 views
0

我一直在閱讀關於使用ActiveRecord的序列化,我認爲我理解如何使用它,但我的嘗試失敗,所以我不知道如果我想要的東西甚至有可能以這種方式?我想要的是存儲一個簡單的哈希鏈接id的對象稱爲accruals的天數。例如{「1」=>「12」,「5」=>「24」}。我設置瞭如下:使用ActiveRecord序列化哈希不工作?

class User < ActiveRecord::Base 
     serialize :accrual_days, Hash 
end 

以及數據庫

def self.up 
    unless column_exists? :users, :accrual_days 
     add_column :users, :accrual_days, :text 
    end 
end 

然後我走進了軌道控制檯,輸入以下命令:

User.find(1) .accrual_days

=>無

用戶.find(1).accrual_days = { 「1」=> 「12」}

=> { 「1」=> 「12」}

User.find(1).accrual_days

=>無

這似乎是accrual_days正在設置,但它不會持續。我在設置應計日後嘗試保存用戶,並將其作爲字符串而不是文本存儲在數據庫中,但問題依然存在。我究竟做錯了什麼?

回答

4

您不保存數據庫中的值。

嘗試

user = User.find(1) 

user.accrual_days = {"1"=>"12"} 

user.save 

User.find(1).accrual_days 
+0

謝謝,我知道我在很久以前發佈的這一點,但更晚接受一個答案總比不! – Alexei