1. Conclusion </ b>
2. Qu'est-ce qu'ActiveHash </ b>
3. Comment utiliser </ b>
4. Supplément </ b>
Créez plusieurs modèles et répertoriez-les tous dans db / migrate!
ActiveHash est un gemme qui peut gérer des données en écrivant des données inchangées dans un fichier modèle sans les enregistrer dans la base de données une par une </ b>!
La méthode d'introduction d'ActiveHash est la même que celle des autres gemmes, je vais donc l'omettre! Préparez également un tableau que vous souhaitez refléter.
console
%rails g model abcdefghi --skip-migration
Je vais le décrire! La raison de sauter est qu'il n'est pas nécessaire de migrer vers DB (créer une table)!
Puis
model
class Abcdefghi <ApplicationRecord
Parce que c'est Réécrivons ApplicationRecord en ActiveHash :: Base </ b>! Vous pouvez également utiliser les méthodes ApplicationRecord en héritant d'ActiveHash :: Base! (ActiveHash :: Base peut utiliser des méthodes similaires d'ApplicationRecord)
model
class Abcdefghi <ActiveHash::Base
self.data = [
{ id: 1, name: '--' },
{ id: 2, name: 'A' },
{ id: 3, name: 'B' },
{ id: 4, name: 'C' },
{ id: 5, name: 'D' },
{ id: 6, name: 'E' },
{ id: 7, name: 'F' },
{ id: 8, name: 'G' },
{ id: 9, name: 'H' },
{ id: 10, name: 'I' }
]
Comme si vous créiez une table avec self.data, utilisez le hachage au format tableau. Le contenu qui est extrait de la base de données vers le modèle est exactement comme ceci.
"{Id: 1, name: '-'}" est quelque chose que vous voyez souvent lors de l'affichage.
Répétez ceci depuis le début de 3. autant de fois que vous le souhaitez pour créer un menu déroulant!
db/migrate/20******
class Create****(Nom de table correspondant) <ActiveRecord::Migration[6.0]
def change
create_table :*****(Nom de table correspondant) do |t|
t.integer :abcdeghi_id , null: false
t.timestamps
end
end
end
ça ira!
La raison de l'utilisation de _id est d'apporter l'id du modèle à la table que vous souhaitez enregistrer.
Le reste est comme d'habitude
console
% rails db:migrate
Tout ce que vous avez à faire est OK!
Cependant, ce à quoi je veux faire attention ici, c'est C'est une association. Pour le moment, la classe Abcdefghi <ActiveHash :: Base a une structure comme une table DB, il est donc nécessaire de décrire l'association.
models/****.rb
class (Nom de table correspondant) < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :abcdeghi
end
S'il vous plaît!
model/****.rb
class ****(Nom de table correspondant)< ApplicationRecord
validates :abcdefghi_id, numericality: { other_than: 1 }
En écrivant "{id: 1, nom: '-'}" Vous pouvez écrire la validation que sauf "-" peut être sauvegardé </ b>! Cela signifie que les nombres au-dessus de id: 1 seront reflétés!
Recommended Posts