Voici deux exemples de codes.
Premier avec collect
:
User.first.gifts.collect(&:id)
Deuxième avec pluck
:
User.first.gifts.pluck(:id)
Y a-t-il une différence entre leur performance ou autre chose?
Voici deux exemples de codes.
Premier avec collect
:
User.first.gifts.collect(&:id)
Deuxième avec pluck
:
User.first.gifts.pluck(:id)
Y a-t-il une différence entre leur performance ou autre chose?
pluck
sur le niveau en db. Il interrogera uniquement le champ particulier. Voir cette.
Lorsque vous faites:
User.first.gifts.collect(&:id)
Vous avez des objets avec tous les champs chargé et vous tout simplement obtenir l' id
grâce à la méthode basée sur Énumérable.
Donc:
si vous avez seulement besoin de l' id
, utilisez pluck
si vous avez besoin de tous les champs, collect
si vous avez besoin de quelques champs, select
et collect
Oui. Selon les guides Rails , pluck
convertit directement le résultat d'une base de données en array
, sans construire d'objets ActiveRecord
. Cela signifie de meilleures performances pour une requête volumineuse ou souvent en cours d'exécution.
En plus de la réponse de @apneadiving, pluck
peut prendre à la fois les noms de colonne simples et multiples en tant qu'argument:
Client.pluck(:id, :name)
# SELECT clients.id, clients.name FROM clients
# => [[1, 'David'], [2, 'Jeremy'], [3, 'Jose']]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.