0 ruby hash activerecord ruby-on-rails
我正在创建一个原始 SQL upsert,并且有相当大的 ActiveRecord 关系数组,需要将其转换为哈希值。我需要将哈希值与我选择的参数之一联系起来,以便我可以快速获取该值。
我使用 as_json 找到了这个响应,我几乎可以使用它得到我需要的东西,但它并不完全在那里。
profiles = Profile.all.select(:id, :foo) #returns an array of ActiveRecord Relations
profiles = profiles.as_json
Run Code Online (Sandbox Code Playgroud)
产量
{:id => 123, :foo => "bar"}
{:id => 456, :foo => "baz"}
Run Code Online (Sandbox Code Playgroud)
但我想要的是
{123 => "bar", 456 => "baz"}
Run Code Online (Sandbox Code Playgroud)
我意识到我可以将 as_json 的结果映射到新的哈希,但我必须在几百万条记录上相当频繁地运行它。这也是更大的 rake 任务的一小部分,我想继续循环所有记录到最小限度。
我手动完成这一切而不是让 ActiveRecord 处理的原因是,运行该任务最初需要 24 小时以上,甚至使用activerecord-import也只能将其速度加快到约 12 小时。我选择根据这篇博文中的基准使用原始 SQL
| 归档时间: |
|
| 查看次数: |
2625 次 |
| 最近记录: |