J'ai un modèle ActiveRecord comme ceci:Comment cueillir plusieurs attributs dans Rails 3.x?
class Person < ActiveRecord::Base
attr_accessible :name
end
et besoin d'obtenir un mappage de hachage Person
« s id
s à leurs name
s:
{1 => "Paul", 2 => "Aliyah", 3 => ... }
Maintenant, la manière évidente serait
Person.all.collect { |p| [p.id, p.name] }.to_h
Cependant, je n'ai pas besoin d'instancier tous les Person
, j'ai juste besoin le hachage. Dans Rails 4, je peux .pluck(:id, :name)
au lieu de collect
, mais dans 3.x, pluck
prend seulement un argument. Cependant, je trouve cette solution de contournement pour obtenir ce que je veux sans charger les modèles:
Person.all.group(:id).minimum(:name)
Question: vais-je brûler en enfer? Aussi, y a-t-il une façon plus élégante de faire cela, et y a-t-il des inconvénients de cette approche hacky dont je ne suis peut-être pas au courant? Merci!