ActiveRecordを使い、key=>valueのHashを作成していた。
- コメントで指摘いただいた箇所について修正しました。
指摘箇所である.map { |x| x }ですが、Mysql2::Resultに対しては直接.flattenが使えないため.to_aの代わりとして呼び出していました。
@users = Hash.send :[], *ActiveRecord::Base.connection.execute('SELECT `id`, `name` FROM `users`').to_a.flatten
@users[1]
# => "ユーザー1"
Hash[*Array] をしているため、.execute で取得してくるレコード数が一定を超すとスタックオーバーフローとなる。
records.size
=> 10000
Hash.send :[], *records.flatten
SystemStackError: stack level too deep
ActiveRecordの使い方やHashの作り方の両方に問題があるため修正
@users = User.pluck(:id, :name).to_h
@users[1]
# => "ユーザー1"
.pluckで必要なカラムを取得し .to_h でHash化することで解決しました。