使用ActiveRecord序列化与哈希无法正常工作?

时间:2011-09-25 03:10:23

标签: ruby-on-rails ruby database serialization activerecord

我一直在阅读使用ActiveRecord的序列化,我认为我理解如何使用它,但我的尝试失败了所以我不确定我想要的是否可能这样?我想要的是存储一个简单的哈希,它将被称为accruals的对象的id链接到若干天。例如{“1”=> “12”,“5”=> “24”}。我把它设置如下:

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

然后我进入rails控制台,并输入以下命令:

  

User.find(1).accrual_days

     

=&GT;零

     

User.find(1).accrual_days = {“1”=&gt;“12”}

     

=&GT; { “1”=&gt; “中12”}

     

User.find(1).accrual_days

     

=&GT;零

似乎正在设置accrual_days,但它不会持续存在。我在设置应计日后尝试保存用户,并将其作为字符串而不是文本存储在数据库中,但问题仍然存在。我做错了什么?

1 个答案:

答案 0 :(得分:4)

您没有将值保存在数据库中。

尝试

user = User.find(1)

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

user.save

User.find(1).accrual_days