Als ich bestimmte Daten gespeichert habe, wollte ich 100 Benutzer zufällig mit diesen Daten verknüpfen.
Erstellen Sie zur Vorbereitung eine neue Tabelle, um die "Tabelle, die gespeicherte Daten verwaltet" und die "Tabelle, die Benutzer verwaltet" zu verknüpfen. Details werden später erklärt.
Rufen Sie zunächst in der Methode, mit der die Originaldaten gespeichert werden, die vom Benutzer ausgewählte Methode auf.
if @item.save
destination_select()
Als Politik
① Bereiten Sie ein leeres Array vor (2) Ermitteln Sie die Benutzer-ID mithilfe der Rand-Funktion nach dem Zufallsprinzip ③ Wenn die erfasste ID nicht im Array enthalten ist, speichern Sie sie zusätzlich zum Array. ④ Wenn es enthalten ist, wiederholen Sie die Rand-Funktion </ b>
Es wird sein.
Schauen wir uns jeden an.
① Bereiten Sie ein leeres Array vor </ b>
def destination_select
user_ids = []
end
② Benutzer-ID mit der Rand-Funktion </ b> zufällig abrufen Der Bereich wird mit der Anzahl der Datensätze im Benutzermodell als Argument der Rand-Funktion festgelegt. Auch dieses Mal möchte ich 10 Leute bekommen, also wiederhole ich dies 10 Mal mit der Zeitmethode.
def destination_select
user_ids = []
100.times do |i|
user_id = (rand(User.count))
end
end
def destination_select
user_ids = []
100.times do |i|
user_id = (rand(User.count))
#Beschreiben Sie hier den bedingten Ausdruck von ④
user_ids.push(user_id)
Destination.create(item_id: @item.id, user_id: user_id)
end
end
def destination_select
user_ids = []
100.times do |i|
user_id = (rand(User.count))
while user_ids.include?(user_id) do
user_id = (rand(User.count))
end
user_ids.push(user_id)
Destination.create(item_id: @item.id, user_id: user_id)
end
end
Dies ist abgeschlossen.
6
8
42
85
93
75
5
40
79
23
17
13
88
74
54
62
64
26
35
70
14
49
63
28
81
98
69
94
0
91
87
55
84
83
9
36
80
78
30
12
3
92
20
24
2
67
34
43
16
95
86
38
22
77
97
11
25
21
90
1
51
65
53
68
37
58
56
47
18
15
41
29
89
59
52
44
46
48
82
57
10
50
45
60
66
7
32
76
4
19
27
61
96
39
71
72
33
31
99
73
Wie Sie in den Kommentaren ausgeführt haben, möchte ich zwei Punkte hinzufügen.
(1) In dem obigen Fall ist 0 aufgrund der Art der Rand-Funktion enthalten.
Da die Benutzer-ID 0 nicht vorhanden ist, muss +1 hinzugefügt werden. </ b>
(2) Als Verfahren zur zufälligen Erfassung ist das Folgende eine schnellere Verarbeitungsgeschwindigkeit und eine einfachere Beschreibung. </ b>
User.order("random()").limit(100).pluck(:id) # sqlite/pg
User.order("rand()").limit(100).pluck(:id) # mysql
user_ids = User.order("random()").limit(100).pluck(:id)
user_ids.each{|user_id| Destination.create(item_id: @item.id, user_id: user_id) }
Vielen Dank für den Hinweis.