【问题标题】:Using ActiveRecord serialize with Hash not working?使用带有哈希的 ActiveRecord 序列化不起作用?
【发布时间】:2011-11-24 11:55:48
【问题描述】:

我一直在阅读 ActiveRecord 中序列化的使用,我认为我了解如何使用它,但我的尝试失败了,所以我不确定我想要的东西是否可以通过这种方式实现?我想要的是存储一个简单的散列,将称为应计的对象的 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

=> 无

User.find(1).accrual_days = {"1"=>​​"12"}

=> {"1"=>​​"12"}

User.find(1).accrual_days

=> 无

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

【问题讨论】:

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


    【解决方案1】:

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

    试试

    user = User.find(1)
    
    user.accrual_days = {"1"=>"12"}
    
    user.save
    
    User.find(1).accrual_days
    

    【讨论】:

    • 谢谢,我知道我很久以前就发布了,但迟到总比不接受好!
    猜你喜欢
    • 2011-11-10
    • 2013-09-08
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2015-03-12
    • 2021-12-25
    相关资源
    最近更新 更多