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.
https://github.com/Sn16799/bakeryFUMIZUKI
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
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.
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,
},
]
)
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
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!
Verschiedene Möglichkeiten, Schienen-Samen zu schreiben Rails / Seed-Dateien trennen und verwalten
Recommended Posts