[RUBY] Erstellen Sie eine EC-Site mit Rails5 seed ~ Startdateneingabe ~

Einführung

Dies ist eine Fortsetzung der Serie "Erstellen einer EC-Site mit Rails 5 ⑤" (https://qiita.com/GreenFingers_tk/items/cd8535744f79e22234db), die eine EC-Site erstellt, auf der Sie in einer fiktiven Bäckerei einkaufen können. Um die Implementierung danach fortzusetzen, scheint es zweckmäßig zu sein, die anfänglichen Daten zu speichern, daher habe ich beschlossen, dies einmal zu priorisieren.

Quellcode

https://github.com/Sn16799/bakeryFUMIZUKI

Verwalten Sie mehrere Seed-Dateien

Es sind nur Daten, um zu überprüfen, ob die Anzeige korrekt ausgeführt werden kann. Ich denke, Sie sollten sie auf ein Minimum beschränken. Da es jedoch viele Modelle gibt, ist die Menge an Beschreibungen enorm, wenn Sie versuchen, alles mit einer Datei zu tun. Aus diesem Grund habe ich beschlossen, einen neuen Ordner mit dem Namen seed zu erstellen und die Anfangsdaten für jedes Modell darin abzulegen. (Wenn Sie eine seeds.rb-Datei verwenden möchten, klicken Sie hier](# Alle Daten erstellen))

$ cd work/fumizuki/db
$ mkdir seeds
$ cd seeds
$ touch customer.rb
$ touch address.rb
$ touch genre.rb
$ touch product.rb
$ touch order.rb
$ touch order_item.rb

Dateien lesen, Admin-Daten erstellen

Ermöglichen Sie das Lesen der erstellten Dateien aus der Datei seeds.rb. Wenn Sie jetzt auf Rails db: seed klicken, werden auch die Daten im Seeds-Ordner erkannt. Der hier zu beachtende Punkt ist, dass ** das übergeordnete Modell oben beschrieben ist **. Da die Dateien in der Reihenfolge von der obersten Zeile gelesen werden, tritt der Fehler "Keine Kundendaten!" Auf, wenn das untergeordnete Modell an erster Stelle steht.

db/seeds.rb


require './db/seeds/customer.rb'
require './db/seeds/address.rb'
require './db/seeds/genre.rb'
require './db/seeds/product.rb'
require './db/seeds/order.rb'
require './db/seeds/order_item.rb'

Admin.create!(
  id: 1,
  email: 'admin@user',
  password: 'adminuser',
  password_confirmation: 'adminuser'
  )

Ich habe hier auch die Admin-Daten geschrieben. Die Daten eines Administrators reichen aus, und die Codemenge reicht nicht aus, um sie in separate Dateien aufzuteilen.

Machen Sie viele Daten

架空の人名架空の地名はいつものサイトで調達します。

Address

db/seeds/.rb


Address.create!(
  [
    {
      id: 1,
      customer_id: 1,
      addressee: 'Ayako Inashige',
      post_code: '1111111',
      address: '2 Shinanji-Tempel, Stadt Iwaoyama, Präfektur Tsukikawa-15',
    },

    {
      id: 2,
      customer_id: 2,
      addressee: 'Yumiko Suzuka',
      post_code: '2222222',
      address: 'Präfektur Hosono Stadt Shiromi Seijigaoka 3-1-7',
    },

    {
      id: 3,
      customer_id: 3,
      addressee: 'Chiemi Sekizawa',
      post_code: '3333333',
      address: '6 Tomochi Town, Hatsuyama City, Präfektur Akada-12',
    },

    {
      id: 4,
      customer_id: 4,
      addressee: 'Volumenübertragung',
      post_code: '4444444',
      address: '8 Gomedai, Stadt Hashima, Präfektur Neno-12',
    },

    {
      id: 5,
      customer_id: 5,
      addressee: 'Yayoi Okazaki',
      post_code: '5555555',
      address: '3 Mt.-5-2',
    },
  ]
  )

Customer

db/seeds/.rb


Customer.create!(
  [
    {
      id: 1,
      email: '1@1',
      family_name: 'Nagaoka', family_name_kana: 'Nagaoka',
      first_name: 'Satomi',   first_name_kana: 'Satomi',
      post_code: '1111111',
      address: '2 Majoji, Stadt Otonishigawa, Präfektur Kitaoka-6-1',
      tel: '11111111',
      is_active: true,
      password: '111111',
      password_confirmation: '111111',
    },

    {
      id: 2,
      email: '2@2',
      family_name: 'Nozaki', family_name_kana: 'Nozaki',
      first_name: 'Kengo',   first_name_kana: 'Kengo',
      post_code: '2222222',
      address: '1 Masuokigaoka, Stadt Banjoyama, Präfektur Torikawa-15',
      tel: '22222222',
      is_active: true,
      password: '222222',
      password_confirmation: '222222',
    },

    {
      id: 3,
      email: '3@3',
      family_name: 'Senoo', family_name_kana: 'Das Ö',
      first_name: 'Chiyomi',   first_name_kana: 'Chiyomi',
      post_code: '3333333',
      address: 'Yamamaki Gakuen 3 in der Stadt Nakawa, Präfektur Nita-2',
      tel: '33333333',
      is_active: true,
      password: '333333',
      password_confirmation: '333333',
    },

    {
      id: 4,
      email: '4@4',
      family_name: 'Tsukagoshi', family_name_kana: 'Tsukagoshi',
      first_name: 'Kimi',   first_name_kana: 'Takami',
      post_code: '4444444',
      address: '5 Stadt Shibayashigawa, Stadt Fuyuta, Präfektur Kasakawa-2-7',
      tel: '44444444',
      is_active: true,
      password: '444444',
      password_confirmation: '444444',
    },

    {
      id: 5,
      email: '5@5',
      family_name: 'Kamada', family_name_kana: 'Kamata',
      first_name: 'Yukihiro',   first_name_kana: 'Yukihiro',
      post_code: '5555555',
      address: 'Erste 2 von Oaza Wei, Stadt Hibikiyama, Präfektur Waseda-16',
      tel: '55555555',
      is_active: true,
      password: '555555',
      password_confirmation: '555555',
    },

  ]
  )

Genre

db/seeds/.rb


Genre.create!(
  [
    {
      id: 1,
      name: 'Normales Brot',
      validity: true
    },

    {
      id: 2,
      name: 'Beilagenbrot',
      validity: true
    },

    {
      id: 3,
      name: 'Süßes Brot',
      validity: true
    },

    {
      id: 4,
      name: 'Begrenzt',
      validity: true
    },

    {
      id: 5,
      name: 'Andere Süßigkeiten',
      validity: true
    },
  ]
  )

Order

db/seeds/.rb


Order.create!(
  [
    {
      id: 1,
      customer_id: 1,
      addressee: 'Ayako Inashige',
      post_code: '1111111',
      send_to_address: '2 Shinanji-Tempel, Stadt Iwaoyama, Präfektur Tsukikawa-15',
      how_to_pay: true,
      order_status: 0,
    },

    {
      id: 2,
      customer_id: 2,
      addressee: 'Yumiko Suzuka',
      post_code: '2222222',
      send_to_address: 'Präfektur Hosono Stadt Shiromi Seijigaoka 3-1-7',
      how_to_pay: true,
      order_status: 2,
    },

    {
      id: 3,
      customer_id: 3,
      addressee: 'Chiemi Sekizawa',
      post_code: '3333333',
      send_to_address: '6 Tomochi Town, Hatsuyama City, Präfektur Akada-12',
      how_to_pay: true,
      order_status: 1,
    },

    {
      id: 4,
      customer_id: 4,
      addressee: 'Volumenübertragung',
      post_code: '4444444',
      send_to_address: '8 Gomedai, Stadt Hashima, Präfektur Neno-12',
      how_to_pay: false,
      order_status: 2,
    },

    {
      id: 5,
      customer_id: 5,
      addressee: 'Yayoi Okazaki',
      post_code: '5555555',
      send_to_address: '3 Mt.-5-2',
      how_to_pay: true,
      order_status: 0,
    },
  ]
  )

OrderItem

db/seeds/.rb


OrderItem.create!(
  [
    {
      id: 1,
      order_id: 1,
      product_id: 10,
      quantity: 4,
      order_price: 270,
      make_status: 2,
    },

    {
      id: 2,
      order_id: 1,
      product_id: 7,
      quantity: 6,
      order_price: 230,
      make_status: 1,
    },

    {
      id: 3,
      order_id: 2,
      product_id: 2,
      quantity: 2,
      order_price: 260,
      make_status: 0,
    },

    {
      id: 4,
      order_id: 3,
      product_id: 3,
      quantity: 6,
      order_price: 180,
      make_status: 1,
    },

    {
      id: 5,
      order_id: 4,
      product_id: 4,
      quantity: 8,
      order_price: 370,
      make_status: 1,
    },

    {
      id: 6,
      order_id: 5,
      product_id: 5,
      quantity: 10,
      order_price: 160,
      make_status: 2,
    },
  ]
  )

Product

db/seeds/.rb


Product.create!(
  [
    {
      id: 1,
      name: 'Briosh',
      introduction: 'Brot mit reichem Buttergeschmack.',
      genre_id: 1,
      price: 500,
      status: true,
    },

    {
      id: 2,
      name: 'Stangenbrot',
      introduction: 'Hausweizen 100%Französisches Brot.',
      genre_id: 1,
      price: 260,
      status: true,
    },

    {
      id: 3,
      name: 'Currybrot',
      introduction: 'Mittelwürziges Curry wird mit süßem Brotteig kombiniert.',
      genre_id: 2,
      price: 180,
      status: true,
    },

    {
      id: 4,
      name: 'Hamburger',
      introduction: 'Ich habe viele Zutaten in meine hausgemachten Brötchen gegeben.',
      genre_id: 2,
      price: 370,
      status: true,
    },

    {
      id: 5,
      name: 'anpan',
      introduction: 'Es ist ein neuartiger Anpan, der köstlich ist, egal wo Sie ihn essen.',
      genre_id: 3,
      price: 160,
      status: true,
    },

    {
      id: 6,
      name: 'Sahnebrot',
      introduction: 'Bitte genießen Sie unseren speziellen Pudding.',
      genre_id: 3,
      price: 170,
      status: true,
    },

    {
      id: 7,
      name: 'Pan o Chocolat',
      introduction: 'Unser beliebtestes ♪',
      genre_id: 3,
      price: 230,
      status: true,
    },

    {
      id: 8,
      name: 'Laugen Brothchen',
      introduction: 'Kaubrot nach deutscher Art.',
      genre_id: 4,
      price: 200,
      status: true,
    },


    {
      id: 9,
      name: 'Erdbeerblütenbrot',
      introduction: 'Ich habe dem flauschigen Teig einen Erdbeergeschmack hinzugefügt.',
      genre_id: 4,
      price: 180,
      status: true,
    },

    {
      id: 10,
      name: 'Mont Blanc',
      introduction: 'Bitte kombinieren Sie Marron Creme mit Brioche.',
      genre_id: 5,
      price: 270,
      status: true,
    },

    {
      id: 11,
      name: 'Pfannkuchen',
      introduction: 'Ein feuchter Pfannkuchen aus starkem Mehl.',
      genre_id: 5,
      price: 150,
      status: true,
    },
  ]
  )

Daten gemeinsam erstellen

Wenn Ihnen das Erscheinungsbild nicht besonders ist und Sie nichts dagegen haben, Daten wie "Taro Fumizuki 1" und "Taro Fumizuki 2" zu verwenden, können Sie mehrere Daten gleichzeitig erstellen.

db/seeds.rb


Admin.create!(
  id: 1,
  email: 'admin@user',
  password: 'adminuser',
  password_confirmation: 'adminuser'
  )

50.times do |n|
  Customer.create!(
                   email: "1@#{n}",
                   family_name: "Juli#{n}",
                   family_name_kana: "Fumizuki#{n}",
                   first_name: "Taro#{n}",
                   first_name_kana: "Taro#{n}",
                   post_code: "1111111",
                   address: "Emukai-ji-Tempel, Stadt Hikawa, Präfektur Yokooka#{n}Chome",
                   tel: "11111111111",
                   is_active: true,
                   password: "111111",
                   password_confirmation: "111111",
                   )

  Address.create!(
                  customer_id: 1,
                  addressee: "Nana Fumizuki#{n}",
                  post_code: '1111111',
                  address: '2 Matsubayashi, Stadt Higashi Satomi, Präfektur Mihashi-15-#{n}'
                   )

  Genre.create!(
                name: "Genre das#{n}",
                validity: true
                )

  Product.create!(
                  name: "Selbstgemachtes Brot#{n}",
                  introduction: "#{n}Es ist doppelt so lecker! (Im Vergleich zu unserer Firma)",
                  genre_id: 1,
                  price: 260,
                  status: true,

  Order.create!(
                customer_id: 1,
                addressee: "Hanako Fumizuki#{n}",
                post_code: "1111111",
                send_to_address: "Stadt Torikubo, Präfektur Yumei",
                how_to_pay: true,
                order_status: 1,
               )

  OrderItem.create!(
                    order_id: 1,
                    product_id: 5,
                    quantity: 10,
                    order_price: 600,
                    make_status: 1,
                   )

end

Nachtrag

Ich bin mir nicht sicher, wann es angebracht ist, die Seed-Daten zu speichern, aber ich habe sie vorerst eingegeben. Es ist möglicherweise am reibungslosesten, alle Schritte nach dem Einstellen des Modells auszuführen. Die App selbst kann erstellt werden, auch wenn keine Daten vorhanden sind, daher bin ich ratlos.

Ich kann mich nicht entscheiden, in welcher Reihenfolge eine App am effizientesten entwickelt werden kann, und ich habe das Gefühl, dass ich es in einer ziemlich durcheinandergebrachten Reihenfolge mache. Nach Abschluss dieser EC-Site möchte ich die Reihenfolge der Kommentarartikel ändern und ein Tutorial zusammenstellen, das schnell implementiert werden kann.

Die größte Frage ist "ob es abgeschlossen werden kann oder nicht"! Weiter zum nächsten Mal!

Referenz

Verschiedene Möglichkeiten, Schienen-Samen zu schreiben Rails / Seed-Dateien trennen und verwalten

Recommended Posts

Erstellen Sie eine EC-Site mit Rails5 seed ~ Startdateneingabe ~
Erstellen Sie eine EC-Site mit Rails5 ⑤ ~ Kundenmodell ~
Erstellen Sie eine EC-Site mit Rails 5 ⑩ ~ Erstellen Sie eine Bestellfunktion ~
Erstellen Sie eine EC-Site mit Rails5 Address ~ Adresse, Genre-Modell ~
Erstellen einer EC-Site mit Rails 5 ⑨ ~ Erstellen einer Warenkorbfunktion ~
Erstellen Sie eine EC-Site mit Rails5 ④ ~ Kopf- und Fußzeile ~
Erstellen Sie eine EC-Site mit Rails5 ③-Set Model-Assoziationen und anderen Dingen-
[Rails] Erste Datenerstellung mit Seed
[Rails] Erste Dateneingabe mit seed_fu!
Erstellen Sie eine EC-Site mit Streifen! (Konto-Erstellung)
[Rails] Erstellen Sie eine Anwendung
Rails6: Geben Sie die Anfangsdaten von ActionText mit seed ein
Erstellen einer EC-Site mit Rails5 ①-App-Konfiguration, verschiedene Edelsteinvorbereitungen, Modell- / Routing-Erstellung-
[Rails] EC-Site-Cart-Funktion
Erstellen Sie ein Portfolio mit Rails + Postgres SQL
Erstellen Sie eine App mit Spring Boot 2
Erstellen Sie eine App-Katalogsite mit CLI für Microsoft 365 mit Docker
[Rails] DB-Design für EC-Standort
Erstellen Sie eine Excel-Datei mit poi
Erstellen Sie eine App mit Spring Boot
Erstellen Sie meine Seite mit Rails
[Rails 6] Zwei Methoden zur gleichzeitigen Eingabe mehrerer Bilder mit CarrierWave / (1) Eingabe mit anfänglichen Startdaten / (2) Import mit CSV
Lassen Sie uns eine Instanz mit .new selbst erstellen. .. ..
[Java] Erstellen Sie mit Gradle ein ausführbares Modul
Einfache Bereitstellung mit Capistrano + AWS (EC2) + Rails
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
[Rails] Verwalten Sie Daten für jede Seed-Datei
[Schienen] Holen Sie sich die Standardeingabe für mehrzeilige Daten
[Rails 5] Erstelle eine neue App mit Rails [Anfänger]
Lassen Sie uns mit Rails einen Fehlerbildschirm erstellen
Erstellen einer EC-Site mit Rails5 Product ~ Produktmodell, bedingte Verengungsanzeige für Eltern und Kinder ~
Nuxt.js × Erstellen Sie eine Anwendung im Rails-API-Modus
Downgrade einer vorhandenen App, die mit Rails 5.2.4 erstellt wurde, auf 5.1.6
[Rails] Rails neu, um eine Datenbank mit PostgreSQL zu erstellen
Erstellen Sie eine JSON-API, die die RSA-Verschlüsselung mit Wicket unterstützt
Erstellen Sie einen Team-Chat mit Rails Action Cable
Erstellen Sie eine App, indem Sie die Rails-Version angeben
Rails6.0 ~ So erstellen Sie eine umweltfreundliche Entwicklungsumgebung
Erstellen Sie einen Annotator, der Kuromoji mit NLP4J verwendet. [007]
[Rails] So erstellen Sie eine Umgebung mit Docker
Erstellen Sie mit Faker Dummy-Daten für das Portfolio [Hinweis]