Je posterai sur qiita pour la première fois, je suis un débutant. Nous vous serions reconnaissants de bien vouloir signaler toute erreur de formulation.
Dans le portefeuille d'activités de changement d'emploi en cours de création, les utilisateurs des données initiales ont été amenés à se suivre dans seeds.rb. J'ai reçu une réponse comprenant une révision du code d'un ingénieur d'une certaine entreprise à volonté. Concernant ce seeds.rb, il a été souligné que "la logique est anormalement difficile à comprendre".
Le code ci-dessous a fait que les utilisateurs par défaut se suivent.
db/seeds_relationships.rb
19.times do |n| #Répéter le traitement 19 fois
users = User.all #Attribuer tous les objets Utilisateur aux utilisateurs variables
user = users.find(n + 1) #Id (n) spécifié à partir de la variable users+1) Attribuez l'objet Utilisateur à l'utilisateur variable
following = users[0..18] #1 des utilisateurs du tableau dans la variable suivante~Remplacez jusqu'au 19e objet utilisateur
following.shift(n + 1) #Depuis le début du tableau suivant avec la méthode shift(n+1)Débarrassez-vous d'un élément
followers = users[0..18] #1 des utilisateurs du tableau dans la variable followers~Remplacez jusqu'au 19e objet utilisateur
followers.shift(n + 1) #Depuis le début des suiveurs de tableau avec la méthode shift(n+1)Débarrassez-vous d'un élément
following.each { |followed| user.follow(followed) } #Chaque utilisateur dont l'utilisateur est inclus dans le tableau suivant(followed)Suivre
followers.each { |follower| follower.follow(user) } #Chaque utilisateur contenu dans le tableau suiveurs(follower)Suit l'utilisateur
end
Vous pouvez le voir en un coup d'œil, mais c'est inhabituellement difficile à comprendre.
L'ingénieur a souligné comme ci-dessus, Qu'est-ce que la permutation? J'ai pensé, et quand je l'ai traduit, j'ai trouvé que cela signifiait «ordre».
C'est le nombre de r pièces différentes extraites de n pièces différentes et disposées dans une colonne. [Mathématiques au lycée] Différences d'ordre et de combinaison qui peuvent être vues à partir de 1
C'est un gars comme AB, BA, BC, CB, AC, CA ().
[1, 2, 3].permutation do |x|
p x
end
La séquence suivante est créée à partir des éléments du tableau.
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
En mettant (n) après permutation, n éléments différents peuvent être extraits et arrangés du tableau.
[1, 2, 3].permutation(2) do |x|
p x
end
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]
Source: Créer une permutation
db/seeds_relationships.rb
users = User.all.to_a
users.permutation(2) do |n|
n[0].follow(n[1])
end
Le premier utilisateur suit 2,3,4,5… deuxième utilisateur, Le deuxième utilisateur suit le 1,3,4,5… deuxième utilisateur, Le troisième utilisateur suit le 1,2,4,5… troisième utilisateur et devient J'ai pu utiliser la méthode de permutation pour que tous les utilisateurs par défaut se suivent.
db/seeds_relationships.rb
users = User.all.to_a
users.permutation(2) do |user1, user2|
user1.follow(user2)
end
J'ai reçu un commentaire et l'ai corrigé. La lisibilité est plutôt bonne!
Recommended Posts