[RUBY] Utilisation de Active Hash

introduction

Je crée une application originale avec Rails. J'ai appliqué Active Hash à cette application. Activé pour sélectionner l'ensemble de données dans ActiveHash au format déroulant. Je vais l'écrire pour que je puisse m'en souvenir même si je l'oublie.

Environnement de développement ruby 2.6.5 Rails 6.0.3.4

table des matières

  1. Introduction de Active Hash
  2. Préparation du modèle
  3. Préparation du contrôleur
  4. Afficher la vue

1. Introduction de Active Hash

Active Hash est l'un des joyaux. Ajoutez au fichier Gem et installez dans le terminal.

Gemfile


gem 'active_hash'

Terminal


bundle install

2. Préparation du modèle

Ici, le jour est la cible d'Active Hash. Lors de la création d'un modèle - Si le saut de migration est ajouté, le fichier de migration ne sera pas créé. S'il existe d'autres cibles ActiveHash, créez autant de modèles qu'il y a.

Terminal


rails g model day --skip-migration

Héritez ActiveHash dans le modèle. self.data est un tableau qui stocke les données au format de hachage. L'identifiant et le nom (jours) sont liés dans le hachage.

app/models/day.rb


class day < ActiveHash::Base #← Hériter ActiveHash
 self.data = [
   { id: 1, name: '--' },
   { id: 2, name: 'Un jour' },
   { id: 3, name: '1 semaine' },
 ]
 end

Ensuite, configurez pour enregistrer l'ID du nombre de jours défini ci-dessus dans la base de données. Prenez l'article comme exemple d'une table associée à ActiveHash.

2020***********_create_articles.rb


class CreateArticles < ActiveRecord::Migration[6.0]
 def change
   create_table :articles do |t|
     t.string     :title        , null: false
     t.text       :text         , null: false
     t.integer    :day_id       , null: false #Colonne dans laquelle l'ID ActiveHash est stocké
     t.timestamps
   end
 end
end

N'oubliez pas de migrer. Les associations de modèles aussi.

app/model/article


validates :day_id # _Ajouter un identifiant
belongs_to_active_hash :day # _identifiant non requis

3. Préparation du contrôleur

Ajoutez day_id au paramètre strong afin qu'il puisse être enregistré.

ruby:article.controller.rb


Exemple:
  def new    
    @article = Article.new
  end

  def create    
    @article = Article.new(article_params)
  end

  private
  def article_params
    params.require(:article).permit(:title, :text, :day_id)
  end

Afficher la vue

Il peut être affiché au format déroulant par collection_select. Les arguments vont du premier au cinquième.

argument valeur
Premier argument(Colonne à enregistrer) day_id
Deuxième argument(Tableau d'objets) Day.all
Troisième argument(Éléments stockés dans des colonnes) id
Quatrième argument(Nom de colonne affiché dans les options) name
Cinquième argument(option) {}
option html {class:"day-select"}
<%= f.collection_select(:day_id, Day.all, :id, :name, {}, {class:"day-select"}) %>

c'est tout

Recommended Posts

Utilisation de Active Hash
Les pièges d'Active Hash
[Rails] À propos du hachage actif
[Rails] Présentation de Active Hash
Lister le contenu des catégories créées avec Active Hash
Conception de table (en utilisant Active Hash)
gem active_hash À propos du hachage actif
À propos du comportement de ruby Hash # ==
Hacher
Extraction du double hash "ruby" * Avis
[Java] Référence / mise à jour d'Active Directory
J'ai essayé d'expliquer Active Hash
Utilisation du composant Talend (5) Créez votre propre composant