Ich werde zum ersten Mal auf Qiita posten. Ich bin ein Anfänger. Wir würden uns freuen, wenn Sie auf Fehler im Wortlaut hinweisen könnten.
In dem erstellten Portfolio für Jobwechselaktivitäten wurden die Benutzer der ursprünglichen Daten dazu gebracht, in seeds.rb aufeinander zu folgen. Ich erhielt eine Antwort mit einer Codeüberprüfung von einem Ingenieur eines bestimmten Unternehmens. In Bezug auf diese seeds.rb wurde darauf hingewiesen, dass "die Logik ungewöhnlich schwer zu verstehen ist".
Mit dem folgenden Code folgen die Standardbenutzer einander.
db/seeds_relationships.rb
19.times do |n| #Wiederholen Sie die Verarbeitung 19 Mal
users = User.all #Weisen Sie den variablen Benutzern alle Benutzerobjekte zu
user = users.find(n + 1) #Die von den variablen Benutzern angegebene ID (n)+1) Weisen Sie das Benutzerobjekt dem variablen Benutzer zu
following = users[0..18] #1 von Array-Benutzern in folgenden Variablen~Ersetzen Sie bis zum 19. Benutzerobjekt
following.shift(n + 1) #Ab dem Anfang des Arrays folgt mit der Shift-Methode(n+1)Ein Element loswerden
followers = users[0..18] #1 der Array-Benutzer in den variablen Followern~Ersetzen Sie bis zum 19. Benutzerobjekt
followers.shift(n + 1) #Vom Anfang des Arrays folgen Follower mit der Shift-Methode(n+1)Ein Element loswerden
following.each { |followed| user.follow(followed) } #Jeder Benutzer, dessen Benutzer im folgenden Array enthalten ist(followed)Folgen
followers.each { |follower| follower.follow(user) } #Jeder Benutzer, der in den Array-Followern enthalten ist(follower)Folgt dem Benutzer
end
Sie können es auf einen Blick sehen, aber es ist ungewöhnlich schwer zu verstehen.
Der Ingenieur wies wie oben darauf hin, Was ist Permutation? Ich dachte, und als ich es übersetzte, stellte ich fest, dass es "Ordnung" bedeutete.
Dies ist die Anzahl der verschiedenen r Teile, die aus n verschiedenen Teilen entnommen und in einer Spalte angeordnet wurden. [High School Mathematik] Unterschiede in Reihenfolge und Kombination, die aus 1 ersichtlich sind
Es ist ein Typ wie AB, BA, BC, CB, AC, CA ().
[1, 2, 3].permutation do |x|
p x
end
Die folgende Sequenz wird aus den Elementen im Array erstellt.
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
Durch Setzen von (n) nach der Permutation können Sie n verschiedene Elemente aus dem Array extrahieren und anordnen.
[1, 2, 3].permutation(2) do |x|
p x
end
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]
Quelle: Permutation erstellen
db/seeds_relationships.rb
users = User.all.to_a
users.permutation(2) do |n|
n[0].follow(n[1])
end
db/seeds_relationships.rb
users = User.all.to_a
users.permutation(2) do |user1, user2|
user1.follow(user2)
end
Ich habe einen Kommentar erhalten und ihn korrigiert. Die Lesbarkeit ist ziemlich gut!
Recommended Posts