gpt4 book ai didi

ruby-on-rails - 使用原始 sql 将 ruby​​ 哈希保存到 postgres

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:56 24 4
gpt4 key购买 nike

如何使用 sql 将 ruby​​ 哈希直接保存到 postgres?

我试过这样的:

INSERT INTO "table" ("created_at", "key", "params") VALUES (now(), 'create', '{:sub => tralal}')

但是它将字符串插入到数据库中,我如何在保存对象时像在 ruby​​ 中那样插入散列。

从 rails 执行插入的 sql 查询如下所示:

INSERT INTO "table" ("created_at", "key", "params") VALUES ($1, $2, $3) RETURNING "id"  [["created_at", Mon, 24 Feb 2014 18:53:58 UTC +00:00], ["key", "create"], ["parameters", "---\n:sub: tralal\n"]

我正在尝试使用 sql 进行一些插入以提高性能,但我无法弄清楚如何将哈希而不是字符串放入数据库中

如果我使用到 yaml 的转换,我会得到:

{:my => 'hash'}.to_yaml
=> "---\n:my: hash\n"

当我这样做的时候:

INSERT INTO "table" ("created_at", "key", "params") VALUES (now(), 'create', '---\n:my: hash\n')

然后当我尝试将它取回 Rails 控制台时:

MyClass.last[:parameters].keys.first
=> "---\\n:my"

我得到 ---\\n:my 而不是 :my

最佳答案

看起来您的代码正在将哈希序列化为 YAML,然后您可以在读回它时对其进行反序列化。为此您可以使用 YAML.load,它将序列化的哈希转换回 ruby​​ 哈希。

要从数据库中手动读回 yaml,您必须使用 YAML 对其进行解析:

更新:

当我这样做时:

INSERT INTO "table" ("created_at", "key", "params") VALUES (now(), 'create', '---\n:my: hash\n')

我可以读取并解析它:

model = MyClass.last
params = YAML.load model.params
=> {:my=>"hash"}

关于ruby-on-rails - 使用原始 sql 将 ruby​​ 哈希保存到 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com