我们说我有一个哈希:
{"MemberId"=>"MID-0000001", "MemberName"=>"Bruce", "OrderNumber"=>"ON-000000001"}
如何将此哈希插入mysql中 db 数据库的 orders 表?
实际上,这个代码将成为任何gem时运行的计划任务(Ruby on Rails应用程序)的一部分。
如果我必须提交更多信息,请与我们联系。
表订单具有与哈希相同的列名。
答案 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