2

我有一个应该存储 id、名称和哈希的表。如何序列化哈希?(我使用 Ruby 和Sequel作为 ORM。)

4

4 回答 4

5

您似乎已经找到了足够的答案,但我认为我会使用通用的 Ruby 方式。

# outside of rails you'll need this
require 'base64'

# encode
h = { :first => "John", :age => 23 }
encoded = Base64.encode64(Marshal.dump(h))

# decode
h = Marshal.load(Base64.decode64(encoded))

我使用它来序列化 Ruby 对象(例如跨 JSON 和到 DB),您会发现 Rails 中的 cookie 会话以相同的方式对会话哈希进行编码。使用它从浏览器 cookie 调试会话内容通常很方便。

于 2010-01-28T06:18:58.280 回答
5

如果您使用的是 Sequel::Model,序列化插件应该可以解决问题。

于 2010-01-25T18:24:37.663 回答
1

如果您正在寻找JSON-API合规性,那么我对JSONAPI::Serializers很满意。您将需要传递该:skip_collection_check选项,并且为了提高性能,您应该 1) 传递结果集,而不是数据集,以及 2) 在序列化之前急切加载关系(如果您正在旁加载数据)。

于 2015-10-14T22:51:40.547 回答
0

你可以试试 YAML:

require 'yaml'

# encode
my_hash = { :first => "John", :age => 23 }
encoded = YAML.dump(my_hash)

# decode
my_hash = YAML.load(encoded)

您可以将其存储在 Sequel String 中,它适用于复杂对象,并且在 DB 中是可读的。我在这里读到了。

于 2017-07-05T14:47:32.197 回答