Как мне сериализовать данные с помощью Sequel и Ruby? - PullRequest
3 голосов
/ 25 января 2010

У меня есть таблица, в которой должны храниться идентификатор, имя и хэш. Как мне сериализовать хэш? (Я использую Ruby и Sequel в качестве ORM.)

Ответы [ 4 ]

6 голосов
/ 28 января 2010

Вы, кажется, нашли достаточный ответ, но я подумал, что смогу использовать универсальный 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 и в БД), и вы обнаружите, что сеансы cookie в Rails кодируют хэш сеанса таким же образом. С помощью этого часто удобно отлаживать содержимое сеанса из файла cookie браузера.

6 голосов
/ 25 января 2010

Если вы используете Sequel :: Model, плагин Serialization должен сделать свое дело.

1 голос
/ 15 октября 2015

Если вы ищете JSON-API соответствие, мне повезло с JSONAPI :: Serializer . Вам нужно будет передать опцию :skip_collection_check, и для производительности вы должны: 1) передать наборы результатов, а не наборы данных, и 2) отношения eager-load перед сериализацией (если вы загружаете данные с боковой стороны).

0 голосов
/ 05 июля 2017

Вы можете попробовать YAML:

require 'yaml'

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

# decode
my_hash = YAML.load(encoded)

Вы можете сохранить его в строке сиквела, он работает со сложными объектами и доступен для чтения в БД. Я читал об этом здесь .

...