[RAILS] Hash in Ruby läuft über Stapel, wenn es viele Argumente gibt

Ich habe ActiveRecord verwendet, um einen Hash mit key => value zu erstellen.

@users = Hash.send :[], *ActiveRecord::Base.connection.execute('SELECT `id`, `name` FROM `users`').map {|x| x}.flatten
@users[1]
# => "Benutzer 1"

Da Hash [* Array] verwendet wird, tritt ein Stapelüberlauf auf, wenn die Anzahl der durch Ausführen abgerufenen Datensätze eine bestimmte Stufe überschreitet.

Es gibt ein Problem sowohl bei der Verwendung von ActiveRecord als auch bei der Erstellung von Hash.

@users = User. User.pluck(:id, :name).to_h
@users[1]
# => "Benutzer 1"

Holen Sie sich die erforderlichen Spalten mit .pluck und konvertieren Sie mit .to_h in Hash

Recommended Posts

Hash in Ruby läuft über Stapel, wenn es viele Argumente gibt
Überladung, wenn Methodenargumente vererbt / implementiert werden
Wenn Java-Tests Umgebungsvariablen enthalten
[Ruby on Rails] Wenn beim Registrieren von Daten doppelte Datensätze vorhanden sind, registrieren Sie sich nicht