我一直在阅读使用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,但它不会持续存在。我在设置应计日后尝试保存用户,并将其作为字符串而不是文本存储在数据库中,但问题仍然存在。我做错了什么?
答案 0 :(得分:4)
您没有将值保存在数据库中。
尝试
user = User.find(1)
user.accrual_days = {"1"=>"12"}
user.save
User.find(1).accrual_days