2011-09-25 47 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