[RUBY] Implémentation n ° 8 pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6

Création d'une API de tableau d'affichage avec autorisation de certification dans la mise à jour Rails 6 # 7, destruction de l'implémentation

Qu'est-ce que la graine

Chaque fois que des données de test sont nécessaires pendant le développement, il est difficile de frapper rails c ou de créer une action pour créer un enregistrement. Par conséquent, nous allons introduire une graine qui facilite la création d'enregistrements prédéfinis, qu'ils soient 50 ou 1000, simplement en appuyant sur une commande.

Création et chargement de fichiers

Si vous recherchez uniquement avec des rails seed, cela sera généralement écrit directement dans db / seedss.rb, mais s'il y a beaucoup de modèles, ce sera difficile à gérer. Par conséquent, divisez le fichier et créez-en un format appelé par require à partir de db / seeds.rb.

Cela facilite la gestion lors de l'ajout ou de la suppression, et seed peut également être exécuté en spécifiant un fichier, ce qui est pratique.

$ mkdir db/seeds
$ touch db/seeds/post_seeds.rb

db/seeds.rb


# frozen_string_literal: true

seed_models = %i[post]
seed_models.each do |model|
  require "./db/seeds/#{model}_seeds"
end

db/seeds/post_seeds.rb


# frozen_string_literal: true

unless Post.exists?
  20.times do
    Post.create!(subject: "hoge", body: "fuga")
  end
end

En espérant que le nombre de modèles à ensemencer augmentera à l'avenir, nous lirons les fichiers externes en les ajoutant à une variable appelée seed_models. En analysant le répertoire, vous pouvez faire en sorte que vous n'ayez pas à changer db / seeds.rb à chaque fois, mais il y aura des dépendances telles que l'enregistrement du modèle utilisateur à créer à l'avenir doit exister avant le modèle de publication. Donc, je l'ai écrit pour pouvoir jouer manuellement avec l'ordre d'exécution.

Le contenu de post_seeds.rb exécute simplement Post.create! 20 fois. En ajoutant !, Une exception sera levée lorsque l'enregistrement ne peut pas être effectué en raison d'une erreur de validation, donc si vous le remarquez, vous pouvez empêcher la situation où l'enregistrement n'a pas été généré.

$ rails db:reset
$ rails db:seed
$ rails c
[1] pry(main)> Post.count
   (1.1ms)  SELECT COUNT(*) FROM "posts"
=> 20

En réinitialisant db: reset, toutes les tables sont supprimées et régénérées. Cela exécutera une graine qui ne fonctionnera que lorsqu'il y a un enregistrement. Et par db: seed, vous pouvez voir que 20 enregistrements ont été ajoutés.

Introduction de Faker

C'est bien d'avoir un disque, mais tous les sujets sont hoge et le corps est fuga. À ce rythme, si vous l'obtenez de l'API pour une raison quelconque, il sera difficile de le remarquer même si le même enregistrement est confus. Cependant, il est difficile de créer une chaîne de caractères complètement aléatoire à chaque fois, donc Faker est utile.

Mettons-le pour le moment.

Gemfile


...
group :development, :test do
...

+   "faker"
end
...
$ bundle

Essayons-le.

$ rails c
[1] pry(main)> Faker::Name.unique.name
=> "Miss Porter Kovacek"
[2] pry(main)> Faker::Name.name
=> "Felicita Durgan"
[3] pry(main)> Faker::Name.name
=> "Yong Weissnat"
[4] pry(main)> Faker::Name.name
=> "Sandie Oberbrunner"

De cette manière, il renvoie automatiquement une nomenclature et des phrases aléatoires à chaque exécution. Vérifiez Check on Github pour les termes définis par défaut. Non seulement les noms, les animaux, les adresses et les numéros de téléphone des gens, mais aussi des films, des dessins animés, des jeux, des drames, de la musique. Il y a même des noms de Pokémon et un fruit du diable ONE PIECE.

Mettez Faker dans les graines

db/seeds/post_seeds.rb


# frozen_string_literal: true

unless Post.exists?
  20.times do
-    Post.create!(subject: "hoge", body: "fuga")
+    Post.create!(subject: Faker::Lorem.word, body: Faker::Lorem.paragraph)
  end
end
$ db:reset
$ db:seed
$ rails c
[1] pry(main)> Post.all
  Post Load (0.4ms)  SELECT "posts".* FROM "posts"
=> [#<Post:0x000000000636cbe8
  id: 1,
  subject: "quos",
  body: "Earum numquam qui. Impedit autem molestias. Ipsum adipisci eos.",
  created_at: Sun, 06 Sep 2020 15:36:27 UTC +00:00,
  updated_at: Sun, 06 Sep 2020 15:36:27 UTC +00:00>,
 #<Post:0x00000000063b5be0
  id: 2,
  subject: "vero",
  body:
   "Impedit distinctio saepe. Adipisci cupiditate officiis. Vel et deleniti.",
  created_at: Sun, 06 Sep 2020 15:36:27 UTC +00:00,
  updated_at: Sun, 06 Sep 2020 15:36:27 UTC +00:00>,

Vous pouvez voir que des enregistrements aléatoires de sujet et de corps ont été créés.

Japaneseize Faker

Il n'est pas pratique de créer un site japonais s'il est en anglais même si vous le mettez, alors localisons-le. Puisque db: seed est exécuté dans l'environnement de développement, essayons de japonaisiser Faker dans l'environnement de développement.

config/environments/development.rb


 Rails.application.configure do
...

+  Faker::Config.locale = "ja"
 end

Si vous n'aimez pas la japonaisisation tout le temps, vous pouvez mettre Faker :: Config.locale =" ja " dans db / seeds / post_seeds.rb. Puis exécutez à nouveau la graine.

$ rails db:reset
$ rails db:seed
$ rails c
[1] pry(main)> Post.all
  Post Load (0.3ms)  SELECT "posts".* FROM "posts"
=> [#<Post:0x0000000006480b88
  id: 1,
  subject: "Aller",
  body: "Lieutenant-général de police. Meishibokin Katamichi. Traditionnel Tokugawa super ~.",
  created_at: Sun, 06 Sep 2020 15:45:27 UTC +00:00,
  updated_at: Sun, 06 Sep 2020 15:45:27 UTC +00:00>,
 #<Post:0x00000000064fb928
  id: 2,
  subject: "français",
  body: "~ Système la semaine dernière. Je rentre à la maison. Prix élevé au magasin.",
  created_at: Sun, 06 Sep 2020 15:45:27 UTC +00:00,
  updated_at: Sun, 06 Sep 2020 15:45:27 UTC +00:00>,

Il a été traduit avec succès en japonais. Vous pouvez vérifier la version japonaise sur Github (https://github.com/faker-ruby/faker/blob/master/lib/locales/ja.yml). Inversement, ce qui n'est pas là est toujours en anglais.

A continué

Introduction du sérialiseur # 9 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6 [Vers la table de sérialisation]

Recommended Posts

Implémentation n ° 8 pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Créez une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 6 show, créez une implémentation
Créer une API de tableau d'affichage avec autorisation de certification dans la mise à jour Rails 6 # 7, détruire l'implémentation
# 16 paramètre de stratégie pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Présentation du sérialiseur n ° 9 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Construire une API de tableau d'affichage avec certification et autorisation dans le contrôleur Rails 6 # 5, implémentation des routes
Introduction de # 10 devise_token_auth pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails 6
Introduction de l'expert n ° 15 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Construire une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 14 Seed Affichage du temps d'exécution
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 13 Accorder l'en-tête d'authentification
Créez une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 17 Ajoutez des privilèges d'administrateur
Construire une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 18 ・ Implémentation du contrôleur de l'utilisateur final
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 1 Construction de l'environnement
Créer une API de tableau d'affichage avec autorisation dans Rails 6 # 12 Association d'utilisateur et de publication
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 11 Test et validation du modèle utilisateur ajoutés
Présentation de # 2 git et rubocop pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails
# 4 post-validation et mise en œuvre de test pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 3 RSpec, FactoryBot introduit et post-modèle
Comment créer une API avec GraphQL et Rails
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part3-Implémentation d'action avec authentification-
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Comment créer un environnement Rails 6 avec Docker
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part1-Implémentation de l'action sans authentification-
[Rails] Différentes manières d'écrire dans des fichiers de départ
Essayez de créer un babillard en Java
[Rails] Comment créer un environnement avec Docker
[Comment insérer une vidéo dans un hameau avec Rails]
Utilisation de l'API PAY.JP avec Rails ~ Préparation de l'implémentation ~ (payjp.js v2)
Comment interroger Array dans jsonb avec Rails + postgres
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Politique de mise en œuvre pour enregistrer et afficher dynamiquement le fuseau horaire dans les rails
Comment configurer un proxy avec authentification dans Feign
Japaneseize en utilisant i18n avec Rails
Implémenter l'authentification LTI dans Rails
Comment écrire des graines de Rails
[Rails] Comment faire des graines
[Procédure d'implémentation] Créer une fonction d'authentification utilisateur à l'aide de sorcellerie dans Rails
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part2 -authentification de l'utilisateur-
Ce à quoi j'étais accro lors de la mise en œuvre de l'authentification Google avec des rails
Comment obtenir la valeur de boolean avec jQuery sous forme simple de rails
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant