我正在使用名为omnicontacts的gem,它允许我导出我的Gmail联系人。当我检索到我的联系人时,我想将它们保存到一个名为联系人的表中。
但是我接收了一系列电子邮件,然后我必须循环浏览每一封电子邮件并打印出他们的电子邮件。现在我想知道如何保存所有这些(每封电子邮件都是自己的)。从技术上讲,我想我可以循环创建一个函数,但这会花费大量的时间。
接收数组然后循环遍历每个数组以保存数组时,最佳做法是什么?
目前我在我看来这样做:
def create
@imported_contacts = request.env['omnicontacts.contacts']
@user = request.env['omnicontacts.user']
end
我的控制器看起来像这样:
Pending.dbo
答案 0 :(得分:1)
如果您遍历联系人并单独创建它们,则会有很多数据库事务并且性能会受到影响。我建议你使用activerecord-import https://github.com/zdennis/activerecord-import。在一个创建查询中,您应该能够将所有记录插入到数据库中。
答案 1 :(得分:0)
您实际上必须遍历@contacts
并使用email
属性创建联系人,如下所示:
@contacts.each {|contact| Contact.create(email: contact[:email].to_s)}
因为,每个联系人都有自己独特的电子邮件,因此您无法一次创建所有这些邮件,因此您必须遍历它们。
如果某个属性在所有联系人中都很常见,那么您可以使用update_all一次更新所有联系人的属性。但是,在这种情况下,联系人电子邮件对于每个联系人都是不同的,因此您无法像上面所示那样循环更新它们。