[RUBY] Créez un site EC avec Rails5 ⑥ ~ entrée de données de départ ~

introduction

Il s'agit d'une continuation de la série "Création d'un site EC avec Rails 5 ⑤" (https://qiita.com/GreenFingers_tk/items/cd8535744f79e22234db), qui crée un site EC où vous pouvez faire vos achats dans une boulangerie fictive. Afin de continuer l'implémentation après cela, il semble pratique de mettre les données initiales, j'ai donc décidé de donner la priorité à cela une fois.

Code source

https://github.com/Sn16799/bakeryFUMIZUKI

Gérer plusieurs fichiers d'amorçage

Ce ne sont que des données pour vérifier si elles peuvent être affichées correctement, donc je pense que vous devriez le faire au minimum. Cependant, comme il existe de nombreux modèles, la quantité de description sera énorme si vous essayez de tout faire avec un seul fichier. Par conséquent, j'ai décidé de créer un nouveau dossier appelé seeds et d'y mettre les données initiales de chaque modèle. (Si vous souhaitez utiliser un fichier seeds.rb, cliquez ici](#Create all data))

$ 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

Lire des fichiers, créer des données d'administration

Rendre possible la lecture des fichiers créés à partir du fichier seeds.rb. Maintenant, lorsque vous frappez rails db: seed, les données du dossier seeds seront également reconnues. Le point à noter ici est que ** le modèle parent est décrit ci-dessus **. Puisque les fichiers sont lus dans l'ordre à partir de la ligne supérieure, si le modèle enfant vient en premier, une erreur "Aucune donnée client!" Se produira.

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'
  )

J'ai également écrit les données d'administration ici. Les données d'un administrateur suffisent et la quantité de code n'est pas suffisante pour le diviser en fichiers séparés.

Faire beaucoup de données

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

Address

db/seeds/.rb


Address.create!(
  [
    {
      id: 1,
      customer_id: 1,
      addressee: 'Ayako Inashige',
      post_code: '1111111',
      address: '2 Temple Shinanji, ville d'Iwaoyama, préfecture de Tsukikawa-15',
    },

    {
      id: 2,
      customer_id: 2,
      addressee: 'Yumiko Suzuka',
      post_code: '2222222',
      address: 'Préfecture de Hosono Ville de Shiromi Seijigaoka 3-1-7',
    },

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

    {
      id: 4,
      customer_id: 4,
      addressee: 'Transfert de volume',
      post_code: '4444444',
      address: '8 Gomedai, ville de Hashima, préfecture de Neno-12',
    },

    {
      id: 5,
      customer_id: 5,
      addressee: 'Yayoi Okazaki',
      post_code: '5555555',
      address: '3 Karuiyama, Shinami City, Préfecture de Furuoka-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, ville d'Otonishigawa, préfecture de 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, ville de Banjoyama, préfecture de Torikawa-15',
      tel: '22222222',
      is_active: true,
      password: '222222',
      password_confirmation: '222222',
    },

    {
      id: 3,
      email: '3@3',
      family_name: 'Senoo', family_name_kana: 'Théo',
      first_name: 'Chiyomi',   first_name_kana: 'Chiyomi',
      post_code: '3333333',
      address: 'Yamamaki Gakuen 3 dans la ville de Nakawa, préfecture de 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 Ville de Shibayashigawa, ville de Fuyuta, préfecture de 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: 'Premier 2 d'Oaza Wei, ville de Hibikiyama, préfecture de Waseda-16',
      tel: '55555555',
      is_active: true,
      password: '555555',
      password_confirmation: '555555',
    },

  ]
  )

Genre

db/seeds/.rb


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

    {
      id: 2,
      name: 'Pain d'accompagnement',
      validity: true
    },

    {
      id: 3,
      name: 'Pain sucré',
      validity: true
    },

    {
      id: 4,
      name: 'Limité',
      validity: true
    },

    {
      id: 5,
      name: 'Autres bonbons',
      validity: true
    },
  ]
  )

Order

db/seeds/.rb


Order.create!(
  [
    {
      id: 1,
      customer_id: 1,
      addressee: 'Ayako Inashige',
      post_code: '1111111',
      send_to_address: '2 Temple Shinanji, ville d'Iwaoyama, préfecture de Tsukikawa-15',
      how_to_pay: true,
      order_status: 0,
    },

    {
      id: 2,
      customer_id: 2,
      addressee: 'Yumiko Suzuka',
      post_code: '2222222',
      send_to_address: 'Préfecture de Hosono Ville de 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, Akada Prefecture-12',
      how_to_pay: true,
      order_status: 1,
    },

    {
      id: 4,
      customer_id: 4,
      addressee: 'Transfert de volume',
      post_code: '4444444',
      send_to_address: '8 Gomedai, ville de Hashima, préfecture de Neno-12',
      how_to_pay: false,
      order_status: 2,
    },

    {
      id: 5,
      customer_id: 5,
      addressee: 'Yayoi Okazaki',
      post_code: '5555555',
      send_to_address: '3 Karuiyama, Shinami City, Préfecture de Furuoka-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: 'Pain avec une riche saveur de beurre.',
      genre_id: 1,
      price: 500,
      status: true,
    },

    {
      id: 2,
      name: 'baguette',
      introduction: 'Blé domestique 100%Pain français.',
      genre_id: 1,
      price: 260,
      status: true,
    },

    {
      id: 3,
      name: 'Pain au curry',
      introduction: 'Le curry moyennement épicé est combiné avec de la pâte à pain sucrée.',
      genre_id: 2,
      price: 180,
      status: true,
    },

    {
      id: 4,
      name: 'Hamburger',
      introduction: 'J'ai mis beaucoup d'ingrédients dans mes petits pains faits maison.',
      genre_id: 2,
      price: 370,
      status: true,
    },

    {
      id: 5,
      name: 'Anpan',
      introduction: 'C'est un anpan roman qui est délicieux peu importe où vous le mangez.',
      genre_id: 3,
      price: 160,
      status: true,
    },

    {
      id: 6,
      name: 'Pain à la crème',
      introduction: 'Veuillez profiter de notre crème anglaise spéciale.',
      genre_id: 3,
      price: 170,
      status: true,
    },

    {
      id: 7,
      name: 'Pan o Chocolat',
      introduction: 'Notre ♪ le plus populaire',
      genre_id: 3,
      price: 230,
      status: true,
    },

    {
      id: 8,
      name: 'Laugen Brothchen',
      introduction: 'Pain moelleux à l'allemande.',
      genre_id: 4,
      price: 200,
      status: true,
    },


    {
      id: 9,
      name: 'Pain aux fleurs de fraise',
      introduction: 'J'ai ajouté une saveur de fraise à la pâte moelleuse.',
      genre_id: 4,
      price: 180,
      status: true,
    },

    {
      id: 10,
      name: 'Mont blanc',
      introduction: 'Veuillez combiner la crème marron avec la brioche.',
      genre_id: 5,
      price: 270,
      status: true,
    },

    {
      id: 11,
      name: 'crêpe',
      introduction: 'Une crêpe moelleuse à base de farine forte.',
      genre_id: 5,
      price: 150,
      status: true,
    },
  ]
  )

Créez des données ensemble

Si vous n'êtes pas particulier sur l'apparence et que cela ne vous dérange pas d'utiliser des données telles que "Taro Fumizuki 1" et "Taro Fumizuki 2", vous pouvez créer plusieurs données à la fois.

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: "juillet#{n}",
                   family_name_kana: "Fumizuki#{n}",
                   first_name: "Taro#{n}",
                   first_name_kana: "Taro#{n}",
                   post_code: "1111111",
                   address: "Temple Emukai-ji, ville de Hikawa, préfecture de 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, ville de Higashi Satomi, préfecture de Mihashi-15-#{n}'
                   )

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

  Product.create!(
                  name: "Pain fait maison#{n}",
                  introduction: "#{n}C'est deux fois plus délicieux! (Par rapport à notre entreprise)",
                  genre_id: 1,
                  price: 260,
                  status: true,

  Order.create!(
                customer_id: 1,
                addressee: "Hanako Fumizuki#{n}",
                post_code: "1111111",
                send_to_address: "Ville de Torikubo, préfecture de 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

Postscript

Je ne sais pas quand il convient de mettre les données de départ, mais je les ai mises pour le moment. Il peut être le plus simple d'effectuer toutes les étapes après avoir défini le modèle. L'application elle-même peut être créée même s'il n'y a pas de données, donc je suis perdu.

Je ne peux pas décider dans quel ordre est le moyen le plus efficace de développer une application, et je pense que je le fais dans un ordre assez désordonné. Après avoir terminé ce site EC, j'aimerais changer l'ordre des articles de commentaires et mettre en place un tutoriel qui peut être mis en œuvre rapidement.

La plus grande question est "si oui ou non il peut être complété"! Continuez à la prochaine fois!

référence

Différentes façons d'écrire des graines de rails Séparez et gérez les fichiers Rails / seed

Recommended Posts

Créez un site EC avec Rails5 ⑥ ~ entrée de données de départ ~
Créer un site EC avec Rails5 ⑤ ~ Modèle client ~
Créer un site EC avec Rails 5 ⑩ ~ Créer une fonction de commande ~
Créer un site EC avec Rails5 ⑦ ~ Adresse, modèle de genre ~
Créer un site EC avec Rails 5 ⑨ ~ Créer une fonction de panier ~
Créer un site EC avec Rails5 ④ ~ En-tête et pied de page ~
Créer un site EC avec Rails5 ③-Définir des associations de modèles et d'autres choses-
[Rails] Création initiale des données avec seed
[Rails] Entrée de données initiale avec seed_fu!
Créez un site EC en utilisant des rayures! (Création de compte)
[Rails] Créer une application
Rails6: saisissez les données initiales d'ActionText à l'aide de seed
Création d'un site EC avec Rails5 ①-Configuration de l'application, préparation de divers gemmes, création de modèle / routage-
[Rails] Fonction de panier de site EC
Créer un portfolio avec rails + postgres sql
Créez une application avec Spring Boot 2
Créer un site de catalogue d'applications à l'aide de l'interface de ligne de commande pour Microsoft 365 avec Docker
[Rails] Conception de bases de données pour le site EC
Créer une fonction de pagination avec Rails Kaminari
Créer un fichier Excel avec POI
Créez une application avec Spring Boot
Créer ma page avec Rails
[Rails 6] Deux méthodes pour saisir plusieurs images à la fois à l'aide de CarrierWave / (1) Saisie avec les données de départ initiales / (2) Importer avec CSV
Créons vous-même une instance avec .new. .. ..
[Java] Créer un module exécutable avec Gradle
Déploiement facile avec Capistrano + AWS (EC2) + Rails
Construire un environnement Rails 6 + MySQL avec Docker compose
[Retrait des rails] Créez une fonction de retrait simple avec des rails
[Rails] Gérez les données de chaque fichier de départ
[Rails] Obtenir une entrée standard pour les données multilignes
[Rails 5] Créer une nouvelle application avec Rails [Débutant]
Faisons un écran d'erreur avec Rails
Création d'un site EC avec Rails5 ⑧ ~ Modèle de produit, affichage restreint conditionnel pour les parents et les enfants ~
Nuxt.js × Créer une application en mode API Rails
Rétrograder une application existante créée avec les rails 5.2.4 vers 5.1.6
[Rails] rails nouveau pour créer une base de données avec PostgreSQL
Créez une API JSON prenant en charge le cryptage RSA avec wicket
Créez une discussion d'équipe avec Rails Action Cable
Créer une application en spécifiant la version de Rails
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
Créer un annotateur qui utilise kuromoji avec NLP4J [007]
[Rails] Comment créer un environnement avec Docker
Créez des données factices pour le portefeuille avec Faker [Note]