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.
https://github.com/Sn16799/bakeryFUMIZUKI
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
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.
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,
},
]
)
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
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!
Différentes façons d'écrire des graines de rails Séparez et gérez les fichiers Rails / seed
Recommended Posts