"MID-0000001", "MemberName"=>"Bruce", "OrderNumber"=>"ON-000000001"} 如何将此哈希值-6ren">
gpt4 book ai didi

mysql - 如何使用 ruby​​ 将哈希插入 mysql

转载 作者:行者123 更新时间:2023-11-29 08:29:50 25 4
gpt4 key购买 nike

假设我有一个哈希值:

{"MemberId"=>"MID-0000001", "MemberName"=>"Bruce", "OrderNumber"=>"ON-000000001"}

如何将此哈希值插入到 mysql 中 db 数据库的 orders 表中?

实际上,此代码将成为(Ruby on Rails 应用程序的)计划任务的一部分,每当 gem 运行时都会运行。

如果我需要提交其他信息,请告诉我。

orders 具有与哈希中相同的列名称。

最佳答案

简短回答:Active Record,或替代的“对象关系模型”。

将表视为哈希或对象的模式序列化。 Ruby 通过 Active Record 可以非常智能地处理反序列化过程,但它通常是由相反的过程定义的 - 通过读取数据库,Active Record 找出数据在反序列化时会变成什么,并从中得出什么当你序列化它时发生。

因此,您通常的用例是根据您的对象找出您想要的字段(例如 objects.each_with_object({}){|hash, obj| hash.merge!(obj)} 并查找所有字段),然后编写 Active Record 声明来实现这一点。然后Model.create(obj)并且您刚刚将其保存到数据库

但是您正在“倒退”,因此可能对一些有趣的功能感兴趣:

Serialization将使您可以将相当任意的对象存储到数据库的单个字段中(对象间引用可能很困难),有效地混合了 shema 和无模式范例。 Postgres 有多个 new features其中一些现在是 rails 4 的一部分通过 ActiveRecord,您可以轻松地执行您想要的操作 - 但这两个选项都适用于您的数据子集。要转储整个内容,您可以转到 schemaless不要担心它(相反,担心其他事情!)。或graph ,为了完整性,但这听起来不像您正在寻找的。

TL;博士:

1) 每个散列都描述一个对象,其中每个键是一列,每个值是一行 - 只需定义 Active Record 模型并读取散列即可。

2) 将哈希的子集粘贴到文本列中,并使用事件记录序列化或高级 postgres 功能对其进行解析。

3)使用无模式数据库,然后将整个内容按原样放入其中。

最后,您的用例是相同的:Model.create({"MemberId"=>"MID-0000001", ...})

关于mysql - 如何使用 ruby​​ 将哈希插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977825/

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