[RUBY] [Rails] Présentation de Active Hash

introduction

Active_Hash est une gemme qui vous permet de gérer les données sans les enregistrer dans la base de données en décrivant directement les données inchangées telles que le nom de la préfecture et la sélection de catégorie dans le fichier modèle. En utilisant Active_Hash, vous pouvez utiliser la méthode ActiveRecord pour les données inchangées décrites directement dans le fichier de modèle.

table des matières

  1. Installez Active Hash
  2. Création d'un modèle
  3. Modifier le fichier de migration
  4. Paramètres d'association
  5. Modifier le fichier de vue

1. Installez Active Hash

Décrivez ce qui suit dans le fichier gem. Ensuite, exécutez l'installation groupée avec la commande.

gemfile


gem 'active_hash'

2. Créez un modèle

Cette fois, nous allons créer un modèle de publication et un modèle de catégorie. Créez le modèle Post comme d'habitude.

Terminal
rails g model post

Utilisez l'option "--skip-migration" lors de la création d'un modèle de catégorie. Utilisez "--skip-migration" pour empêcher la génération du fichier de migration. Cette fois, nous ne créerons pas de fichier de migration car nous n'enregistrerons pas les informations de catégorie dans la base de données.

Terminal
rails g model category --skip-migration

Définissez la classe Category dans category.rb et héritez de la classe ActiveHash :: Base. En héritant d'ActiveHash :: Base, les méthodes ActiveRecord peuvent être utilisées pour les objets définis dans le modèle Category.

app/models/genre.rb


class Category < ActiveHash::Base
  self.data = [
    { id: 1, name: '---' },
    { id: 2, name: 'Lotion' },
    { id: 3, name: 'Émulsion' },
    { id: 4, name: 'Tout en un' },
    { id: 5, name: 'nettoyage' },
    { id: 6, name: 'Lavage du visage' },
    { id: 7, name: 'Crème solaire' },
    { id: 8, name: 'lèvre' },
    { id: 9, name: 'parfum' },
    { id: 10, name: 'Couleur de cheveux' },
    { id: 11, name: 'Coiffure' },
    { id: 12, name: 'Après-shampooing' },
    { id: 13, name: 'lentilles de contact' }
  ]
end

Les données sont stockées dans un tableau sous la forme d'un hachage.

3. Modifier le fichier de migration

Créez une colonne category_id dans la table des articles. Il est _id car il récupère la catégorie associée à l'identifiant et enregistre l'identifiant de la catégorie dans la table des publications. Le type de colonne doit être ** type entier **.

db/migrate/20XXXXXXXXXXXX_create_articles.rb


~Abréviation~
t.integer :category_id, null: false
~Abréviation~

4. Paramètres d'association

ActiveHash fournit une méthode appartient_to_active_hash. Si vous souhaitez configurer une association pour un modèle créé à l'aide d'ActiveHash, utilisez la méthode appartient_to_active_hash. Vous pouvez utiliser la méthode appartient_to_active_hash en écrivant ActiveHash :: Associations :: ActiveRecordExtensions.

app/models/post.rb


class Post < ApplicationRecord
  extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to_active_hash :category
end

5. Modifier le fichier de vue

Cette fois, les données sont affichées au format déroulant. Par conséquent, utilisez la méthode collection_select pour l'afficher.

<%= form.collection_select(Nom de colonne à enregistrer,Tableau d'objets,Éléments stockés dans des colonnes(Nom de la colonne de base de données à référencer lors de l'affichage),Nom de colonne affiché dans les options,option,option html(classe etc.)) %>
Exemple

ruby:app/views/posts/new.html.erb


<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:”category-select"}) %>

Lien de référence

https://github.com/zilkey/active_hash

Recommended Posts

[Rails] Présentation de Active Hash
[Rails] À propos du hachage actif
[Rails] Présentation de jquery
[Rails] Présentation du dispositif
Présentation de Bootstrap à Rails 5
Présentation de Bootstrap aux rails !!
Utilisation de Active Hash
Présentation de Rails6 + Bootswatch / Honoka
Les pièges d'Active Hash
Conception de table (en utilisant Active Hash)
gem active_hash À propos du hachage actif
Qu'est-ce que Rails Active Record?
Hacher
Présentation du calendrier complet à l'application Rails
[Rails] Comment utiliser Active Storage
Présentation de React to Rails avec react-rails
J'ai essayé d'expliquer Active Hash
[Ruby on Rails] À propos du rappel Active Record
Rails Active Storage réduit les images avant le téléchargement