[RUBY] [Rails] Verschiedene Möglichkeiten zum Schreiben in Seed-Dateien

Umgebung

Ruby 2.6.5 Rails 6.0.3

Wie man dies und das schreibt

① Erstellen Sie nur eine (Basis)

seed.rb


User.create!(
   email: "[email protected]",
   name: "user1",
   passowrd: "password"
)

Erstellen! Aktion für das Modell, für das Sie einen Datensatz erstellen möchten. Ich werde den Wert jeder Spalte angeben.

② Erstellen Sie mehrere Demo-Daten

seed.rb


 users = User.create!([
  {nickname: "guest", email: "[email protected]", password: "guest1234"},
  {nickname: "guest2", email: "[email protected]", password: "guest5678"}, 
])

Bereiten Sie ein Array vor. Sie kann erstellt werden, indem Datensatzdaten in Form eines Hash an jedes Element des Arrays übergeben werden.

③ Erstellen Sie mehrere Demo-Daten (wiederholte Verarbeitung)

seed.rb


20.times do |n|
  User.create!(
  name: "guest#{n+1}",
  email: "guest#{n+1}@guest.com",
  password: "guest#{n+1}0000",
 )
end

Führen Sie die Aktion create! Mehrmals mit der Methode times aus. Implementieren Sie unterschiedliche Werte für jeden Datensatz, indem Sie n in den Wert aufnehmen, damit sich Spalten mit Eindeutigkeit nicht überlappen.

④ Sequenzen kombinieren

seed.rb


stations = ["Tokio",
  "Yurakucho",
  "Shimbashi",
  "Hamamatsu Stadt",
  "Tamachi",
  "Takanawa-Tor",
  "Shinagawa",
  "Osaki" ,
  "Gotanda",
  "Meguro",
  "Ebisu",
  "Shibuya",
  "Harajuku",
  "Yoyogi",
  "Shinjuku",
  "Shin-Okubo",
  "Takada Baba",
  "Mejiro",
  "Ikebukuro",
  "Otsuka",
  "Negamo",
  "Komagome",
  "Tabata",
  "Nishi Nippori",
  "Nippori",
  "Uguisudani" ,
  "Ueno",
  "Okachimachi",
  "Akihabara",
  "Kanda"]

stations.length.times do |i|
  Station.create!(
    name: stations[i]
  )
end

Iterieren Sie nach dem Vorbereiten des Arrays so oft wie möglich und geben Sie den Wert des Arrays in die Spalte ein. (Ich denke, ich sollte in der Lage sein, mit jedem zu gehen, aber aus irgendeinem Grund hat es nicht funktioniert und ich habe es mit der Zeit verarbeitet) Ich habe das Array verwendet, weil ich diesen Wert für eine andere Spalte wiederverwenden wollte. (Als ich danach die Demo-Daten des Restaurants erstellte, wollte ich den Stationsnamen in den Geschäftsnamen aufnehmen, also habe ich diese Methode gewählt.)

⑤ Erstellen Sie einen Datensatz mit Attributverschachtelung

seed.rb


Item.create!(
  name: "Sofa",
  produce: "Brandneu",
  price: 8000,
  images_attributes: [{image: File.open('./app/assets/images/index_item01.png',)}]
  )

Wenn die Item-Tabelle die Image-Tabelle verschachtelt und eine has_many-Beziehung hat. Da images_attributes mehrere Datensatzdaten enthält, erstellen Sie ein Array und geben Sie die Datensatzdaten der Image-Tabelle durch Hash an.

⑥ Bisher verschiedene Kombinationen

seed.rb


10.times do |i|
  Shop.create!(
    name: "Frischer Fischladen#{stations[i]}Geschäft",
    address: addresses[i],
    capacity: 40,
    mainimage: File.open('./app/assets/images/shops/shop1_1.jpg'),
    maincontent: "Wir warten darauf, dass Sie Meeresfrüchte direkt aus dem Produktionsbereich zubereiten!",
    likepoints: 0,
    station_ids: [i+1,i+2],
    introduces_attributes: [
      {subcontent: "Sie können Ihr Essen im ruhigen Innenraum genießen.",
        number: 1,
        subimage: File.open('./app/assets/images/shops/shop1_2.jpg')},
      {subcontent:"Wir empfehlen die Meeresfrüchteplatte!",
        number: 2,
        subimage: File.open('./app/assets/images/shops/shop1_3.jpg')},
      {subcontent: "Ein gesprächiger Angestellter wartet auf Sie!",
        number: 3,
        subimage: File.open('./app/assets/images/shops/shop1_4.jpg')}
    ]
  )
end

Mit dem als Stationen bezeichneten Array werden mehrere Shopdaten erstellt. Die Shop-Tabelle verschachtelt die Einführungstabelle, und ich möchte mehrere Datensätze an die Einführungstabelle übergeben, daher übergebe ich das Array in Form eines Hash. Es ist überraschenderweise nicht so kompliziert. (Ich kenne die Ursache nicht, aber das hat zuerst nicht funktioniert, und als ich die Einrückung angepasst habe, ist etwas durchgegangen. Was war das?)

Zusammenfassung

Als ich studierte, wie die Daten im Formular gesendet wurden, verstand ich viel, sodass ich mich nicht zu sehr um die Beschreibung in der Seed-Datei kümmern musste. Beim Lesen verschiedener Dinge hatte ich den Eindruck, dass der Satz "Das Array wird als Hash herausgenommen und der Hash als Array herausgenommen, um die Daten zu speichern", der im offiziellen Text vorkam oder etwas sehr leicht zu verstehen war (denken Sie daran).

Ich werde es als Erinnerung hinterlassen.

Recommended Posts

[Rails] Verschiedene Möglichkeiten zum Schreiben in Seed-Dateien
Wie schreibe ich Rails Seed
[Rails] Zwei Möglichkeiten, form_with zu schreiben
[Rails] Verschiedene Möglichkeiten zum Löschen von Daten
Wie schreibe ich Rails
So schreiben Sie eine Datumsvergleichssuche in Rails
[Schienen] Wie man Samen macht
Wie schreibe ich Rails Routing
[Rails 5] japanMap-Link So schreiben Sie Parameter in die js.erb-Datei
[Rails] So schreiben Sie user_id (externer Schlüssel) in einen starken Parameter
[Rails] Wie schreibe ich eine Ausnahmebehandlung?
So installieren Sie jQuery in Rails 6
So installieren Sie Swiper in Rails
# 8 Seed-Implementierung zum Erstellen einer Bulletin Board-API mit Zertifizierungsautorisierung in Rails 6
So implementieren Sie Suchfunktionen in Rails
So ändern Sie den App-Namen in Rails
So fügen Sie ein Video in Rails ein
Java-How zum Vergleichen von Bilddateien in Binärform
[Java] Wie man Dateien ausgibt und schreibt!
Verwendung von MySQL im Rails-Tutorial
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
[Rails] So konfigurieren Sie das Routing in Ressourcen
Antwortdaten direkt im Frühjahr schreiben
Schreiben wir 5 Möglichkeiten zur Implementierung von Java Singleton und verschiedene Vor- und Nachteile
So implementieren Sie Ranking-Funktionen in Rails
Verwendung von credentials.yml.enc aus Rails 5.2
Schienen: Wie man eine Rechenaufgabe schön schreibt
Mit Rails in eine Tag-zu-URL-Zeichenfolge konvertieren
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
[Java FX] So schreiben Sie Eclipse-Berechtigungen in build.gradle
[Rails] Wie schreibe ich, wenn ich eine Unterabfrage mache?
Ich habe versucht, die Sitzung in Rails zu organisieren
3 Möglichkeiten zum Importieren von Bibliotheken in Android Studio
[Rails] Verwendung von Auswahlfeldern in Ransack
JUnit 5: Wie man Testfälle in enum schreibt
Wie man Rails allgemein ins Japanische übersetzt
So aktualisieren Sie eine vorgefertigte Datei in einem Docker-Container
So trennen Sie .scss nach Controller in Rails
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
So implementieren Sie eine ähnliche Funktion in Rails
So erstellen Sie einfach ein Pulldown mit Rails
Verwendung von JQuery in Rails 6 js.erb
[Schienen] In Gerät hinzugefügt: Benutzername nicht zur Datenbank hinzugefügt
Wie schreibe ich Java String # getBytes in Kotlin?
Rails "So löschen Sie NO FILE-Migrationsdateien"
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So überprüfen Sie Rails-Befehle im Terminal
Hinweise zum Schreiben von Kommentaren auf Englisch