如何使用Sequel和Ruby序列化数据?

时间:2010-01-25 18:22:01

标签: ruby sequel

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

4 个答案:

答案 0 :(得分:6)

如果你正在使用Sequel :: Model,那么Serialization plugin就可以了。

答案 1 :(得分:6)

您似乎找到了足够的答案,但我认为我会使用通用的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和数据库),你会发现Rails中的cookie会话以相同的方式编码会话哈希。使用此功能从浏览器cookie调试会话内容通常很方便。

答案 2 :(得分:1)

如果您正在寻找JSON-API合规性,我已经与JSONAPI::Serializers好运了。您将需要传入:skip_collection_check选项,并且为了提高性能,您应该1)传递结果集,而不是数据集,以及2)序列化之前的预加载关系(如果您正在加载数据)。

答案 3 :(得分:0)

您可以试试YAML:

require 'yaml'

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

# decode
my_hash = YAML.load(encoded)

您可以将其存储在续集字符串中,它可以处理复杂的对象,并且可以在数据库中读取。我读到了它here