ruby-on-rails - 我如何序列化 - 反序列化哈希以将其保存在数据库中?

标签 ruby-on-rails ruby serialization hash

我有一个散列:

h = {
    "revision"=>7,         
    "rev"=>"708a4bd5b", 
    "thumb_exists"=>false, 
    "bytes"=>246000,     
    "modified"=>"Sun, 01 Jul 2012 17:09:15 +0000", 
    "client_mtime"=>"Sun, 01 Jul 2012 17:09:15     +0000", 
    "path"=>"/Getting Started.pdf", 
    "is_dir"=>false,       
    "icon"=>"page_white_acrobat", 
    "root"=>"dropbox",     
    "mime_type"=>"application/pdf", 
    "size"=>"240.2 KB"
}

我想使用以下命令将其保存在数据库中:h.to_s 然后我想从数据库中获取内容并将其用作散列。

s = MyModel[:field_which_contains_hash_string]

我尝试使用 YAML::load s 加载内容,但出现错误:

Psych::SyntaxError: (<unknown>): found unexpected ':' while scanning a plain scalar at line 1 column 96

我猜这是由于时间字符串中的冒号所致。 那么保存哈希并再次检索它的最佳方法是什么?

感谢您的帮助。 最好, 菲利普

最佳答案

在您的模型中创建一列文本类型。然后在你的模型文件中做

class MyModel < ActiveRecord::Base
    serialize :column_name, Hash
end

然后使用以下方式访问它:

my_model = MyModel.new
my_model.column_name[:key] = value
my_model.column_name[:key]

哈希将使用 YAML 序列化到列中

http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Serialization/ClassMethods.html#method-i-serialize

关于ruby-on-rails - 我如何序列化 - 反序列化哈希以将其保存在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11729982/

相关文章:

ruby-on-rails - Rails 中的 ActiveModel::Serializer - JSON 结果中忽略的序列化程序方法

Javascript 更改 src 在一个页面上有效,但在另一页上无效

ruby-on-rails - 我如何知道Rails代码是通过rake还是脚本/生成来运行?

java - 使用 Jackson 的 JSON 数据特殊字段

java - 在 C# 中序列化 Java 对象和反序列化

ruby-on-rails - 电子邮件无法从Mandrill发送到Gmail

arrays - 如何根据 Ruby 数组的内容删除项目?

ruby-on-rails - Rails 和 ActiveRecord:将方法附加到从 ActiveRecord::Base 继承的模型

ruby-on-rails - 查找数组列中的不同值

.net - 如何在 .NET 中序列化大对象? (内存不足异常)