[RUBY] Implementieren Sie die Kategoriefunktion mithilfe von Vorfahren

Einführung

Als ich eine bestimmte Programmierschule besuchte und als Team eine Frima-App erstellte, implementierte ich eine mehrschichtige Struktur von Kategorien, also werde ich sie vorstellen! !!

Abschlusszeichnung

Image from Gyazo

Dann möchte ich es vorstellen.

1. Erstellen eines Modells

Zunächst möchte ich Produkte und Kategorien zuordnen, um Modelle für "Kategorie" und "Artikel" zu erstellen.

$ rails g model category 

$ rails g model item 

2. Einführung der Ance Story

Führen Sie die Vorfahren in Gemfile ein.

gem 'ancestry'

Führen Sie den folgenden Befehl im Terminal aus

$ bundle install

$ rails g migration add_ancestry_to_category ancestry:string:index

$ rails db:migrate

3. Verein

Durch die Verwendung von Vorfahren wird die Viele-zu-Viele-Beziehung zu einer Eins-zu-Viele-Beziehung, und das DB-Design wird einfach.

Beschreibe has_ancestory in category.rb

category.rb


class Category < ApplicationRecord
 has_many :items
 has_ancestry  
end

item.rb


class Item < ApplicationRecord
 belongs_to :category
end

3. Daten einführen

Wir werden Kategoriedatensätze in seeds.rb einführen.

seeds.rb


lady = Category.create(name: "Frauen")
lady_1 = lady.children.create(name: "Spitzen")
lady_1.children.create([{name: "T-Shirt/Schneiden und Nähen(Kurze Ärmel/Ärmellos)"},{name: "T-Shirt/Schneiden und Nähen(Sieben Minuten/Lange Ärmel)"},{name: "Hemd/Bluse(Kurze Ärmel/Ärmellos)"},{name: "Hemd/Bluse(Sieben Minuten/Lange Ärmel)"},{name: "ポロHemd"},{name: "Leibchen"},{name: "Muskelshirt"},{name: "Neckholder"},{name: "stricken/Sweatshirt"},{name: "Tunika"},{name: "Strickjacke/Bolero"},{name: "Ensemble"},{name: "Beste/Gillet"},{name: "Parker"},{name: "Trainer/Schweiß"},{name: "Nackte Spitze/Rohroberteil"},{name: "Jersey"},{name: "Andere"}])

Wenn Sie Vorfahren einschließen, können Sie diese als untergeordnetes Element der unmittelbar vorhergehenden Variablen behandeln, indem Sie .children schreiben.

Die übergeordnete Kategorie, Damen, wird mit der folgenden Beschreibung registriert.

seeds.rb


lady = Category.create(name: "Frauen")

Als nächstes wird die untergeordnete Kategorie Tops mit der folgenden Beschreibung registriert.

seeds.rb


lady_1 = lady.children.create(name: "Spitzen")

Anschließend wird die Kategorie der Enkelkinder mit der folgenden Beschreibung registriert.

seeds.rb


lady_1.children.create([{name: "T-Shirt/Schneiden und Nähen(Kurze Ärmel/Ärmellos)"},{name: "T-Shirt/Schneiden und Nähen(Sieben Minuten/Lange Ärmel)"},{name: "Hemd/Bluse(Kurze Ärmel/Ärmellos)"},{name: "Hemd/Bluse(Sieben Minuten/Lange Ärmel)"},{name: "ポロHemd"},{name: "Leibchen"},{name: "Muskelshirt"},{name: "Neckholder"},{name: "stricken/Sweatshirt"},{name: "Tunika"},{name: "Strickjacke/Bolero"},{name: "Ensemble"},{name: "Beste/Gillet"},{name: "Parker"},{name: "Trainer/Schweiß"},{name: "Nackte Spitze/Rohroberteil"},{name: "Jersey"},{name: "Andere"}])

Führen Sie nach der Beschreibung des Datensatzes in seeds.rb den folgenden Befehl im Terminal aus, um ihn in der Datenbank wiederzugeben.

$ rails db:seed

Es ist so in der DB registriert.

Image from Gyazo

Danke, dass du bis zum Ende zugesehen hast! !!

Ich hoffe, Sie fanden diesen Artikel hilfreich: pray_tone2:

Recommended Posts

Implementieren Sie die Kategoriefunktion mithilfe von Vorfahren
Implementieren Sie die Produktkategoriefunktion mit Abstammung ① (Vorbereitung)
Implementieren Sie die Star Five-Funktion mit der for-Anweisung
Implementieren Sie die Teilübereinstimmungssuchfunktion ohne Ransuck
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
Ablauf zur Implementierung der Image-Posting-Funktion mit ActiveStorage
Fortsetzung ・ Ablauf zur Implementierung der Image-Posting-Funktion mit ActiveStorage
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Vorbereitung"
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der "Seed Edition" der Vorfahren
Implementieren Sie die Anwendungsfunktion in Rails
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Edit Form Edition"
[Schienen] Implementieren Sie die Benutzersuchfunktion
Suchfunktion mit [Rails] Ransack
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Erstellungsformular"
[Rails] Implementierung der Kategoriefunktion
[Rails] Implementiere die Event-End-Funktion (logisches Löschen) mit Paranoia (Gem)
Implementierung der Kategorie-Pulldown-Funktion
[Rails] Implementieren Sie die Image-Posting-Funktion
[Rails] Implementieren Sie die Funktion zur Beantragung / Genehmigung einer Community-Mitgliedschaft mithilfe von Many-to-Many-Zuordnungen
[Rails] Tag-Verwaltungsfunktion (unter Verwendung von Acts-as-Taggable-On)
Implementieren Sie die deklarative Wiederholungsverarbeitung mit Spring Retry
Implementieren Sie Benutzerverwaltungsfunktionen mit Devise
Versuchen Sie, die iOS14-Widget-Funktion zu implementieren
Implementieren Sie eine einfache Anmeldefunktion in Rails
Implementieren Sie die Suchfunktion mithilfe der LIKE-Klausel
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Implementierung der Funktionsfunktion [Rails] gem ancestry category
Implementieren Sie die CSV-Download-Funktion in Rails
Implementieren Sie die Pagenierung mit SpringData Pageable + Thymeleaf