Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby将哈希插入mysql_Mysql_Ruby_Ruby On Rails 3 - Fatal编程技术网

如何使用ruby将哈希插入mysql

如何使用ruby将哈希插入mysql,mysql,ruby,ruby-on-rails-3,Mysql,Ruby,Ruby On Rails 3,假设我有一个散列: {"MemberId"=>"MID-0000001", "MemberName"=>"Bruce", "OrderNumber"=>"ON-000000001"} 如何将此哈希插入mysql中db数据库的orders表中 实际上,这段代码将是一个计划任务(RubyonRails应用程序)的一部分,该任务将与gem一起运行 如果我必须提交其他信息,请告诉我 表顺序的列名与散列中的列名相同。简短回答:活动记录,或替代的“对象关系模型” @order = Ord

假设我有一个散列:

{"MemberId"=>"MID-0000001", "MemberName"=>"Bruce", "OrderNumber"=>"ON-000000001"}
如何将此哈希插入mysql中db数据库的orders表中

实际上,这段代码将是一个计划任务(RubyonRails应用程序)的一部分,该任务将与gem一起运行

如果我必须提交其他信息,请告诉我


表顺序的列名与散列中的列名相同。

简短回答:活动记录,或替代的“对象关系模型”

@order = Order.new
@order.member_id = hash['member_id']
|
|
|
|
@order.save
将表视为哈希或对象的模式化序列化。Ruby通过ActiveRecord可以非常智能地处理反序列化过程,但它通常是由反向过程定义的——通过读取数据库,ActiveRecord可以确定反序列化时数据会变成什么样,并由此确定序列化时会发生什么

因此,您通常的用例是根据您的对象(例如,
objects.each_with_object({}){hash,obj{124; hash.merge!(obj)}
找出您想要的字段),然后编写活动记录声明以实现这一点。然后
Model.create(obj)
您刚刚将其保存到数据库中

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

将允许您将一个非常任意的对象存储到数据库的单个字段中(对象间引用可能很困难),有效地混合了shema和无模式的范例。Postgres有许多功能,其中一些功能现在是via ActiveRecord的一部分,这将使您能够轻松地完成所需的操作,但这两个选项都适用于您的数据子集。要想把整件事都抛在脑后,你可以不去担心它(而是去担心其他事情!)。或者,为了完整性,但这听起来不像你想要的

TL;博士:

1) 您的哈希表都描述了一个对象,其中每个键都是一列,每个值都是一行——只需定义活动记录模型并读入哈希表即可

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

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


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

为什么不使用ActiveRecord模型?我已经使用scaffold创建了表单,并且能够创建新的记录。但它并没有告诉我如何插入散列。你能举几个例子吗?这是我第一次使用mysql:)@toro2k的意思是@fotanus-谢谢!:)是的,我想要这样的例子。在您的示例中,您必须指定每个哈希成员,但我希望立即插入哈希的所有成员。我用一个散列成员尝试了你的,比如:order=order.new order.OrderNumber=myXML[“OrderNumber”]order.save myXML是散列。这给了我一个错误:未初始化的常量顺序(NameError)。这里,myXMl是一个散列。您的模型名是什么?change order=MODEL\u NAME.new如果您的型号名称是Orders,您必须执行order=Orders.new感谢您抽出时间写一个长的答案。事实上,我已经在用Mongoid测试mongodb了,我还遇到了另一个问题。同时,我也很好奇,想知道在关系数据库中它们会是什么样子。将哈希导入mongodb非常快,因为它具有无模式的特性。再次感谢你的建议。