[RAILS] Ruby Hash déborde de pile lorsqu'il y a de nombreux arguments

J'utilisais ActiveRecord pour créer un Hash avec key => value.

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

Puisque Hash [* Array] est utilisé, un débordement de pile se produira si le nombre d'enregistrements récupérés par exécution dépasse un certain niveau.

Il y a un problème avec l'utilisation d'ActiveRecord et la façon de faire du hachage.

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

Obtenez les colonnes requises avec .pluck et convertissez-les en Hash avec .to_h

Recommended Posts

Ruby Hash déborde de pile lorsqu'il y a de nombreux arguments
Surcharge lorsque les arguments de méthode sont hérités / implémentés
Lorsqu'il y a des variables d'environnement dans les tests Java
[Ruby on Rails] S'il y a des enregistrements en double lors de l'enregistrement des données, ne vous enregistrez pas