C'est soudain…
① Imaginez un «collègue qui peut travailler énormément» près de chez vous. ② Votre "femme". Ou pensez à une "femme idéale (homme)".
Une méthode qui fusionne les deux. Je peux travailler énormément, mais joyeux et doux. C'est la "méthode pluck" introduite cette fois.
(... je suis désolé, je vais le faire sérieusement)
Cet article
Je vais vous expliquer. (* Cet article est inutile pour ceux qui maîtrisent déjà la méthode de pincement.)
En conclusion, __ "récupère la valeur d'une colonne dans un tableau" méthode __.
Prenons un tableau comme exemple.
id | name | age |
---|---|---|
1 | ken | 21 |
2 | takuya | 22 |
3 | masato | 29 |
4 | kouta | 24 |
5 | hirokatsu | 23 |
6 | yuuhei | 28 |
7 | takumi | 25 |
8 | akihito | 26 |
Par exemple, si vous avez une table comme celle-ci, vous pouvez utiliser la méthode pluck.
users_controller.rb
@users = User.pluck(:id)
#Résultat de sortie ci-dessous
@users = [1, 2, 3, 4, 5, 6, 7, 8]
De cette manière, en définissant __model name.pluck (nom de colonne) __, le contenu de cette colonne pourrait être obtenu sous forme de tableau.
Vous pouvez également spécifier un deuxième argument ...
users_controller.rb
@users = User.pluck(:id, :name) #Spécifiez le nom comme deuxième argument
#Résultat de sortie ci-dessous
@users = [ [1, "ken"],[2, "takuya"],[3, "masato"],[4, "kouta"],
[5, "hirokatsu"],[6, "yuuhei"],[7, "takumi"],[8, "akihito"] ]
Il est également possible de passer plusieurs arguments de cette manière et de les obtenir sous forme de tableau. Même si vous passez les 3ème et 4ème arguments, vous obtiendrez la même chose qu'un tableau.
Au fait, puisqu'il s'agit d'un tableau, la méthode d'acquisition est légèrement différente,
users_controller.rb
@users = User.pluck(:id, :name) #Spécifiez le nom comme deuxième argument
@users[0][1] = "ken" #Premier tableau[1,"ken"]Parce que c'est le deuxième élément de"ken"Avoir
@users[3][0] = 1 #4ème tableau[4,"kouta"]Obtenez 1 car c'est le premier élément de
Vous pouvez obtenir le contenu comme celui-ci.
Alors, que pouvez-vous faire avec la méthode pluck?
Par exemple, si vous souhaitez savoir s'il existe des données datant de 24 ans dans le modèle utilisateur,
users_controller.rb
User.where(age: 24).exists?
# => true
Vous pouvez l'obtenir en faisant ce qui précède, mais si vous utilisez la méthode pluck
users_controller.rb
User.pluck(:age).include?(24)
# => true
Vous pouvez l'obtenir avec une expression comme celle-ci. __ "... Non, lequel est bien?" __, mais pour ces deux, j'utilise du pincement. J'expliquerai la raison ensuite.
À première vue, les résultats des deux formules ci-dessus se ressemblent. Cependant, le traitement en cours et le nombre de données acquises sont complètement différents.
users_controller.rb
User.where(age: 24).exists?
↓ Voici la requête (instruction pour SQL) émise à ce moment ↓
MySQL
User Exists? (0.6ms) SELECT 1 AS one FROM `users` WHERE `users`.`age` = 24 LIMIT 1
=> true
Alors, que se passe-t-il lorsque vous utilisez la méthode pluck?
users_controller.rb
User.pluck(:age).include?(24)
↓ Cliquez ici pour la requête émise (commande à SQL) ↓
MySQL
(0.5ms) SELECT `users`.`age` FROM `users`
=> true
Voyez-vous que c'est évidemment court? Le temps de traitement est également différent de 0,1 milliseconde.
Dans le premier cas, nous recherchons "s'il y a un utilisateur de 24 ans", alors que Ce dernier cherche à savoir "s'il existe des données pour 24 ans sur l'âge de l'utilisateur".
En d'autres termes, en utilisant pluck __ Vous ne pouvez obtenir que les colonnes dont vous avez besoin, ce qui signifie que votre requête sera plus courte et plus rapide __.
Plus vous avez de données, plus la différence de vitesse de traitement est grande. Pour ceux qui disent: "J'ai fait un portfolio, mais le traitement est un peu lent ...", pourquoi ne pas revoir la description de l'acquisition de données?
① La méthode pluck est la méthode __ "obtenir la valeur d'une certaine colonne dans un tableau" __ (2) En utilisant pluck, dans certains cas, l'émission de requêtes inutiles est supprimée et __ la vitesse de traitement est améliorée __
J'espère que vous pouvez comprendre la bonté de la méthode de pincement, même un peu ... Merci d'avoir regardé jusqu'à la fin.
Recommended Posts