[RUBY] [Rails] Gérez les données de chaque fichier de départ

L'équipe crée un site clone pour une certaine application frima. À ce moment-là, j'ai eu un peu de mal à gérer le fichier d'amorçage, je vais donc le laisser sous forme de mémorandum.

Que veux-tu faire

Lors de la mise en vente d'un produit, l '«état du produit», les «frais de livraison», etc., etc. Saisissez d'abord la valeur dans la base de données afin de pouvoir la sélectionner dans le menu déroulant.

Comme ça スクリーンショット 2020-06-29 17.41.45.png

la mise en oeuvre

1. Création d'une tâche de râteau

Créez seed.rake directement sous lib / tasks / et décrivez ce qui suit

lib/tasks/seed.rake


 Dir.glob(File.join(Rails.root, 'db', 'seeds', '*.rb')).each do |file|
   desc "Load the seed data from db/seeds/#{File.basename(file)}.
   task "db:seed:#{File.basename(file).gsub(/\..+$/, '')}" => :environment do
     load(file)
   end
 end

2. Créez chaque fichier de départ

Créez un répertoire db / seeds et créez un fichier de "nom du modèle.rb où vous voulez mettre les données" dedans Pour le moment, créez Condition.rb qui montre l'état du produit

db/seeds/Condition.rb


conditions = Condition.create([
  {condition: "Nouveau / inutilisé"},
  {condition: "Presque inutilisé"},
  {condition: "Pas de rayures ou de taches visibles"},
  {condition: "Légèrement rayé et sale"},
  {condition: "Il y a des rayures et de la saleté"},
  {condition: "Mauvais état général"}])

3. Exécuter

Tout ce que vous avez à faire est d'exécuter la commande suivante dans le terminal

bundle exec rake  db:seed:condition

Vous avez mis les données dans le tableau des conditions! スクリーンショット 2020-06-29 18.18.27.png

Cependant, un problème est survenu ...

S'il s'agit d'un environnement local, tout allait bien tel quel, mais lors du déploiement dans un environnement de production Je ne savais pas comment lire chaque fichier de départ que j'avais créé, je ne pouvais donc pas refléter les données.

Solution

Ajout de la description suivante à seeds.rb

seeds.rb


require "./db/seeds/condition.rb

Lorsque j'ai exécuté la commande suivante dans le terminal de l'environnement de production, cela s'est reflété correctement

python


require "./db/seeds/condition.rb

À la fin

Je me demande si cela aurait pu être rendu un peu plus facile avec le hachage actif, mais Puisqu'il y a une date de livraison, je l'ai implémentée de cette façon une fois J'aimerais savoir s'il existe un autre bon moyen

Article de référence

Recommended Posts

[Rails] Gérez les données de chaque fichier de départ
[Rails] Création initiale des données avec seed
[Rails] Obtenir une entrée standard pour les données multilignes
Enregistrer les données d'un fichier Excel à l'aide de Rails Gem Roo
Créez un site EC avec Rails5 ⑥ ~ entrée de données de départ ~
Rails6: saisissez les données initiales d'ActionText à l'aide de seed
Résumé des méthodes de lecture de fichiers pour chaque format de fichier Java
[Rails] Préparez les données factices à utiliser pour les tests [Faker]