[RUBY] # 8 Seed-Implementierung zum Erstellen einer Bulletin Board-API mit Zertifizierungsautorisierung in Rails 6

Erstellen einer Bulletin Board-API mit Zertifizierungsberechtigung mit Rails 6 # 7-Update, Implementierung zerstören

Was ist Samen?

Wenn während der Entwicklung Testdaten benötigt werden, ist es schwierig, auf "Rails C" zu klicken oder eine Aktion zum Erstellen eines Datensatzes zu erstellen. Daher werden wir einen Startwert einführen, der es einfach macht, voreingestellte Datensätze (50 oder 1000) zu erstellen, indem Sie einfach einen Befehl drücken.

Dateierstellung und Laden

Wenn Sie nur mit Rails Seed googeln, wird dies normalerweise direkt in db / seeds.rb geschrieben. Wenn es jedoch viele Modelle gibt, ist die Verwaltung schwierig. Teilen Sie daher die Datei und machen Sie sie zu einem Format, das von require aus db / seeds.rb aufgerufen wird.

Dies erleichtert die Verwaltung beim Hinzufügen oder Löschen, und Seed kann auch durch Angabe einer Datei ausgeführt werden, was praktisch ist.

$ 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

In der Erwartung, dass die Anzahl der zu setzenden Modelle in Zukunft zunehmen wird, werden wir externe Dateien lesen, indem wir sie einer Variablen namens seed_models hinzufügen. Durch Scannen des Verzeichnisses können Sie festlegen, dass Sie db / seeds.rb nicht jedes Mal ändern müssen. Es gibt jedoch Abhängigkeiten, z. B. muss der zukünftig zu erstellende Benutzermodelldatensatz vor dem Postmodell vorhanden sein. Also habe ich es geschrieben, damit ich manuell mit der Ausführungsreihenfolge spielen kann.

Der Inhalt von post_seeds.rb wird einfach 20 Mal "Post.create!" Ausgeführt. Durch Hinzufügen von "!" Wird eine Ausnahme ausgelöst, wenn die Registrierung aufgrund eines Validierungsfehlers nicht durchgeführt werden kann. Wenn Sie dies bemerken, können Sie die Situation verhindern, in der der Datensatz nicht generiert wurde.

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

Durch Zurücksetzen von db: reset werden alle Tabellen gelöscht und neu generiert. Dadurch wird ein Startwert ausgeführt, der nur funktioniert, wenn ein Datensatz vorhanden ist. Und mit db: seed können Sie sehen, dass 20 Datensätze hinzugefügt wurden.

Einführung von Faker

Es ist schön, eine Aufzeichnung zu haben, aber alle Themen sind hoge und der Körper ist fuga. Bei dieser Rate ist es schwierig, dies zu bemerken, wenn Sie es aus irgendeinem Grund von der API erhalten, selbst wenn derselbe Datensatz verwirrt ist. Es ist jedoch mühsam, jedes Mal eine völlig zufällige Zeichenfolge zu erstellen, daher ist Faker nützlich.

Lassen Sie es uns vorerst einfügen.

Gemfile


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

+   "faker"
end
...
$ bundle

Probieren wir es aus.

$ 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"

Auf diese Weise werden bei jeder Ausführung automatisch zufällige Nomenklaturen und Sätze zurückgegeben. Überprüfen Sie Check on Github auf die standardmäßig definierten Wörter. Nicht nur die Namen, Tiere, Adressen und Telefonnummern von Menschen, sondern auch Filme, Cartoons, Spiele, Dramen und Musik. Es gibt sogar Pokemon-Namen und ONE PIECE Devil Fruit.

Gib Faker in die Samen

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>,

Sie können sehen, dass zufällige Betreff- und Körperdatensätze erstellt wurden.

Faker japanisieren

Es ist unpraktisch, eine japanische Site zu erstellen, wenn sie auf Englisch ist, obwohl Sie sie eingegeben haben. Lassen Sie uns sie also lokalisieren. Da db: seed in der Entwicklungsumgebung ausgeführt wird, versuchen wir, Faker in der Entwicklungsumgebung zu japanisieren.

config/environments/development.rb


 Rails.application.configure do
...

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

Wenn Sie Japanisierung nicht immer mögen, können Sie Faker :: Config.locale =" ja " in db / seed / post_seeds.rb einfügen. Dann lassen Sie den Samen erneut laufen.

$ 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: "Gehen",
  body: "Generalleutnant Polizist. Meishibokin Katamichi. Traditionelles 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: "Französisch",
  body: "~ System letzte Woche. Ich gehe nach Hause. Hoher Preis im Laden.",
  created_at: Sun, 06 Sep 2020 15:45:27 UTC +00:00,
  updated_at: Sun, 06 Sep 2020 15:45:27 UTC +00:00>,

Es wurde erfolgreich ins Japanische übersetzt. Sie können die japanische Version auf Github überprüfen (https://github.com/faker-ruby/faker/blob/master/lib/locales/ja.yml). Umgekehrt ist das, was nicht drin ist, immer noch auf Englisch.

Fortsetzung

Einführung des Serializers Nr. 9 zum Erstellen einer Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 [Zur Serialisierungstabelle]

Recommended Posts

# 8 Seed-Implementierung zum Erstellen einer Bulletin Board-API mit Zertifizierungsautorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 6. Zeigen Sie, erstellen Sie die Implementierung
Erstellen Sie eine Bulletin Board-API mit Zertifizierungsberechtigung im Rails 6 # 7-Update und zerstören Sie die Implementierung
# 16 Richtlinieneinstellung zum Erstellen einer Bulletin Board-API mit Zertifizierungsberechtigung in Rails 6
Einführung des Serializers Nr. 9 zum Erstellen einer Bulletin-Board-API mit Zertifizierung und Autorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung im Rails 6 # 5-Controller und leiten Sie die Implementierung weiter
Einführung von # 10 devise_token_auth zum Erstellen einer Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6
Einführung des Experten Nr. 15 zum Erstellen einer Bulletin-Board-API mit Zertifizierung und Autorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 14 Seed. Anzeige der Ausführungszeit
Erstellen Sie eine Bulletin Board-API mit Zertifizierungsberechtigung in Rails 6 # 13 Grant-Authentifizierungsheader
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 17. Fügen Sie Administratorrechte hinzu
Erstellen Sie mit Rails 6 # 18 eine Bulletin-Board-API mit Zertifizierung und Autorisierung. ・ Implementierung des Endbenutzer-Controllers
Erstellen Sie eine Bulletin-Board-API mit Zertifizierung und Autorisierung mit Rails 6 # 1 Environment Construction
Erstellen Sie eine Bulletin-Board-API mit Autorisierung in Rails 6 # 12 Assoziation von Benutzer und Beitrag
Erstellen Sie eine Bulletin-Board-API mit Autorisierung in Rails 6 # 11. Benutzermodelltest und Validierung hinzugefügt
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 2 Einführung in Git und Rubocop
# 4 nach Validierung und Testimplementierung zum Erstellen einer Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung mit Rails 6 # 3 RSpec. FactoryBot wird eingeführt und ein Post-Modell erstellt
So erstellen Sie eine API mit GraphQL und Rails
Ich habe versucht, die Rails-API mit TDD von RSpec zu implementieren. Teil3-Aktionsimplementierung mit Authentifizierung
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
So erstellen Sie eine Rails 6-Umgebung mit Docker
Ich habe versucht, die Rails-API mit TDD von RSpec zu implementieren. Teil1-Aktionsimplementierung ohne Authentifizierung-
[Rails] Verschiedene Möglichkeiten zum Schreiben in Seed-Dateien
Versuchen Sie, ein Bulletin Board in Java zu erstellen
[Rails] So erstellen Sie eine Umgebung mit Docker
[So fügen Sie ein Video mit Rails in haml ein]
Verwenden der PAY.JP-API mit Rails ~ Implementierungsvorbereitung ~ (payjp.js v2)
Abfragen von Arrays in jsonb mit Rails + postgres
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
Implementierungsrichtlinie zum dynamischen Speichern und Anzeigen der Zeitzone in Rails
So richten Sie einen Proxy mit Authentifizierung in Feign ein
Japanisieren Sie mit i18n mit Rails
Implementieren Sie die LTI-Authentifizierung in Rails
Wie schreibe ich Rails Seed
[Schienen] Wie man Samen macht
[Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails
Ich habe versucht, die Rails-API mit TDD von RSpec zu implementieren. Teil2 -Benutzerauthentifizierung-
Wovon ich süchtig war, als ich die Google-Authentifizierung mit Rails implementierte
So erhalten Sie den Wert von Boolean mit jQuery in einfacher Rails-Form
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
Schritte zum Erstellen einer Ruby on Rails-Entwicklungsumgebung mit Vagrant