如何使用ruby将哈希插入mysql

时间:2013-06-07 06:43:10

标签: mysql ruby ruby-on-rails-3

我们说我有一个哈希:

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

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

实际上,这个代码将成为任何gem时运行的计划任务(Ruby on Rails应用程序)的一部分。

如果我必须提交更多信息,请与我们联系。

订单具有与哈希相同的列名。

2 个答案:

答案 0 :(得分:2)

简答:Active Record,或另一种“对象关系模型”。

将您的表视为哈希或对象的模式序列化。 Ruby,通过Active Record,对于de / serialization过程非常聪明,但它通常由反向过程定义 - 通过读取数据库,Active Record计算出反序列化时数据的变化,以及在序列化它时会发生。

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

但是你要“倒退”,所以可能对一些有趣的功能感兴趣:

Serialization将允许您将一个非常随意的对象存储到您的数据库的单个字段中(对象间引用可能很困难),有效地混合了shema'd和无架构范例。 Postgres有一些new features,其中一些现在通过ActiveRecord成为rails 4的一部分,这将使您可以轻松地执行您想要的操作 - 但这两个选项都适用于你的数据。要放弃整个事情,你可以去schemaless而不用担心它(相反,担心其他事情!)。或者graph,为了完整性,但这听起来并不像你想要的那样。

TL; DR:

1)你的哈希每个都描述一个对象,其中每个键都是一列,每个值都是一行 - 只需定义活动记录模型并读入哈希值。

2)将哈希的子集粘贴到文本列中,并使用活动记录序列化或高级postgres功能将其解析出来。

3)使用无模式数据库,只需按原样将整个内容粘贴在那里。

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

答案 1 :(得分:0)

@order = Order.new
@order.member_id = hash['member_id']
|
|
|
|
@order.save