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

发布于 2024-08-19 19:23:50 字数 134 浏览 9 评论 0原文

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

I have a table which should store an id, a name and a hash. How do I serialize the Hash? (I'm using Ruby and Sequel as ORM.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

原来是傀儡 2024-08-26 19:23:50

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

If you're using Sequel::Model, the Serialization plugin should do the trick.

夜巴黎 2024-08-26 19:23:50

您似乎已经找到了足够的答案,但我想我应该用通用的 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 调试会话内容通常很方便。

You seem to have found a sufficient answer but I thought I'd chip in with a general-purpose Ruby way.

# 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))

I use this to serialize Ruby objects (e.g. across JSON and to the DB), and you'll find that cookie sessions in Rails encode the session hash in the same way. It's often handy to debug the session contents from a browser cookie using this.

九八野马 2024-08-26 19:23:50

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

If you're looking for JSON-API compliance, I've had good luck with JSONAPI::Serializers. You will need to pass in the :skip_collection_check option, and for performance you should 1) pass in resultsets, not datasets, and 2) eager-load relationships before serializing (if you're sideloading data).

没有你我更好 2024-08-26 19:23:50

您可以尝试一下 YAML:

require 'yaml'

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

# decode
my_hash = YAML.load(encoded)

您可以将其存储在 Sequel 字符串中,它适用于复杂的对象,并且在数据库中可读。我在此处读到了它。

You may give YAML a try:

require 'yaml'

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

# decode
my_hash = YAML.load(encoded)

You can store it in a Sequel String, it works with complex objects, and it is readable in the DB. I read about it here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文