$ 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
Tout d'abord, comme pour la modification du contrôleur, le message est généré à partir de l'utilisateur, nous le créerons donc à partir de user_seeds.rb.
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
Pour le moment, générons 10 utilisateurs presque.
Ensuite, générez post_seeds.rb pour qu'il appartienne à l'utilisateur créé ci-dessus.
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
Obtenez tous les utilisateurs et générez de 0 à 3 messages au hasard.
C'est une bonne idée de se souvenir de Random.rand (x..x)
car c'est une technique souvent utilisée dans les semences.
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
À mesure que le nombre de modèles augmente et que le temps de traitement augmente, il devrait être plus facile de rechercher où se trouve le goulot d'étranglement.
→ Création d'une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 15 pundit introduction [Vers la table de sérialisation]
Recommended Posts