$ rails db:seed
-----user start-----
count from: 0
count to: 10
3.4542s
-----user end-----
-----post start-----
count from: 0
count to: 13
0.1095s
-----post end-----
3.5883s
Wie bei der Änderung des Controllers wird der Beitrag zunächst vom Benutzer generiert, sodass wir ihn aus user_seeds.rb erstellen.
db/seeds/user_seeds.rb
# frozen_string_literal: true
unless User.exists?
10.times do |i|
email = "test#{i + 1}@example.com"
User.create!(email: email, password: "password",
uid: email, provider: "email", name: Faker::Name.name)
end
end
Lassen Sie uns vorerst 10 fast Benutzer generieren.
Generieren Sie anschließend post_seeds.rb, damit es dem oben erstellten Benutzer gehört.
db/seeds/post_seeds.rb
# frozen_string_literal: true
unless Post.exists?
users = User.all
users.each do |user|
Random.rand(0..3).times do
user.posts.create!(subject: Faker::Lorem.word, body: Faker::Lorem.paragraph)
end
end
end
Holen Sie sich alle Benutzer und generieren Sie zufällig 0 bis 3 Beiträge. Es ist eine gute Idee, sich an "Random.rand (x..x)" zu erinnern, da es sich um eine Technik handelt, die häufig im Seed verwendet wird.
db/seeds.rb
# frozen_string_literal: true
seed_models = %i[user post]
all_process_time = Benchmark.realtime do
seed_models.each do |model|
puts "-----#{model} start-----"
puts "count from: #{model.to_s.classify.constantize.count}"
process_time = Benchmark.realtime do
require "./db/seeds/#{model}_seeds"
end
puts "count to: #{model.to_s.classify.constantize.count}"
puts "#{format('%.4<time>f', time: process_time)}s"
puts "-----#{model} end-----"
end
end
puts "#{format('%.4<time>f', time: all_process_time)}s"
$ rails db:seed
-----user start-----
count from: 0
count to: 10
3.4542s
-----user end-----
-----post start-----
count from: 0
count to: 13
0.1095s
-----post end-----
3.5883s
Mit zunehmender Anzahl von Modellen und zunehmender Verarbeitungszeit sollte es einfacher sein, zu untersuchen, wo der Engpass liegt.
→ Erstellen einer Bulletin Board-API mit Zertifizierungsberechtigung in der Einführung von Rails 6 # 15-Experten [Zur Serialisierungstabelle]
Recommended Posts