[RUBY] Implémenter la fonction de catégorie en utilisant l'ancêtre

introduction

Quand je suis allé dans une certaine école de programmation et que j'ai créé une application frima en équipe, j'ai implémenté une structure multicouche de catégories, donc je vais la présenter! !!

Dessin d'achèvement

Image from Gyazo

Ensuite, je voudrais le présenter.

1. Créer un modèle

Tout d'abord, je souhaite associer des produits et des catégories, je vais donc créer des modèles pour "catégorie" et "article".

$ rails g model category 

$ rails g model item 

2. Présentation de l'histoire ance

Présentez l'ancêtre à Gemfile.

gem 'ancestry'

Exécutez la commande suivante dans le terminal

$ bundle install

$ rails g migration add_ancestry_to_category ancestry:string:index

$ rails db:migrate

3. Association

En utilisant l'ancêtre, la relation plusieurs-à-plusieurs devient une relation un-à-plusieurs et la conception de la base de données devient simple.

Décrivez has_ancestory dans category.rb

category.rb


class Category < ApplicationRecord
 has_many :items
 has_ancestry  
end

item.rb


class Item < ApplicationRecord
 belongs_to :category
end

3. Introduisez des données

Nous allons introduire les enregistrements de catégorie dans seeds.rb.

seeds.rb


lady = Category.create(name: "Femmes")
lady_1 = lady.children.create(name: "hauts")
lady_1.children.create([{name: "T-shirt/Couper et coudre(Manches courtes/Sans manches)"},{name: "T-shirt/Couper et coudre(Sept minutes/Manche longue)"},{name: "chemise/chemisier(Manches courtes/Sans manches)"},{name: "chemise/chemisier(Sept minutes/Manche longue)"},{name: "ポロchemise"},{name: "camisole"},{name: "Débardeur"},{name: "Dos nu"},{name: "tricoter/chandail"},{name: "Tunique"},{name: "cardigan/Boléro"},{name: "ensemble"},{name: "Meilleur/Gillet"},{name: "Parker"},{name: "entraîneur/transpiration"},{name: "Top nu/Dessus de tube"},{name: "Jersey"},{name: "Autre"}])

Si vous incluez l'ascendance, vous pouvez la traiter comme un élément enfant de la variable immédiatement précédente en écrivant .children.

La catégorie parente, Mesdames, sera enregistrée avec la description suivante.

seeds.rb


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

Ensuite, la catégorie enfant Tops est enregistrée avec la description suivante.

seeds.rb


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

Ensuite, le groupe de catégories de petits-enfants est enregistré avec la description suivante.

seeds.rb


lady_1.children.create([{name: "T-shirt/Couper et coudre(Manches courtes/Sans manches)"},{name: "T-shirt/Couper et coudre(Sept minutes/Manche longue)"},{name: "chemise/chemisier(Manches courtes/Sans manches)"},{name: "chemise/chemisier(Sept minutes/Manche longue)"},{name: "ポロchemise"},{name: "camisole"},{name: "Débardeur"},{name: "Dos nu"},{name: "tricoter/chandail"},{name: "Tunique"},{name: "cardigan/Boléro"},{name: "ensemble"},{name: "Meilleur/Gillet"},{name: "Parker"},{name: "entraîneur/transpiration"},{name: "Top nu/Dessus de tube"},{name: "Jersey"},{name: "Autre"}])

Après avoir décrit l'enregistrement dans seeds.rb, exécutez la commande suivante dans le terminal pour le refléter dans la base de données.

$ rails db:seed

Il est enregistré dans DB comme ceci.

Image from Gyazo

Merci d'avoir regardé jusqu'au bout! !!

J'espère que vous avez trouvé cet article utile: prier_tone2:

Recommended Posts

Implémenter la fonction de catégorie en utilisant l'ancêtre
Mettre en œuvre la fonction de catégorie de produit en utilisant l'ascendance ① (Préparation)
Implémentez la fonction Star Five à l'aide de l'instruction for
Implémentez la fonction de recherche de correspondance partielle sans utiliser Ransuck
Mettre en œuvre la fonction de classement par étoiles en utilisant Raty dans Rails 6
Flux pour implémenter la fonction de publication d'images à l'aide d'ActiveStorage
Suite ・ Flux pour implémenter la fonction de publication d'image à l'aide d'ActiveStorage
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "Préparation"
[Rails] Implémentation de la fonction de catégorie multicouche à l'aide de l'ascendance "seed edition"
Implémenter la fonction d'application dans Rails
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "Edit Form Edition"
[Rails] Implémenter la fonction de recherche d'utilisateurs
Fonction de recherche à l'aide de [rails] ransack
[Rails] Implémentation de la fonction de catégorie multicouche à l'aide de l'ascendance "Formulaire de création"
[Rails] Implémentation de la fonction de catégorie
[Rails] Implémenter la fonction de fin d'événement (suppression logique) en utilisant la paranoïa (gem)
Mise en œuvre de la fonction déroulante de catégorie
[Rails] Implémenter la fonction de publication d'images
[Rails] Implémentation d'une fonction de demande / d'approbation d'adhésion à la communauté à l'aide d'associations plusieurs-à-plusieurs
[Rails] Fonction de gestion des balises (en utilisant des actes comme des balises)
Implémenter le traitement déclaratif des tentatives à l'aide de Spring Retry
Mettre en œuvre la fonctionnalité de gestion des utilisateurs à l'aide de Devise
Essayez d'implémenter la fonction Widget iOS14
Implémenter une fonction de connexion simple dans Rails
Implémenter la fonctionnalité de recherche à l'aide de la clause LIKE
[Java] Essayez de mettre en œuvre à l'aide de génériques
[Rails] Implémentation de la fonction de catégorie d'ascendance gemme
Implémenter la fonction de téléchargement CSV dans Rails
Implémenter la pagination à l'aide de SpringData Pageable + Thymeleaf