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.
Décrivez ce qui suit dans le fichier gem. Ensuite, exécutez l'installation groupée avec la commande.
gemfile
gem 'active_hash'
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.
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.
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.
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~
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
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.)) %>
ruby:app/views/posts/new.html.erb
<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:”category-select"}) %>
https://github.com/zilkey/active_hash
Recommended Posts