seed-fu est une syntaxe qui vous permet de mettre à jour uniquement les enregistrements qui existent déjà mais que vous souhaitez modifier, de les exécuter fichier par fichier et de les écrire facilement. C'est un bijou pratique avec du sucre.
gem 'seed-fu'
Exécutez également ceci.
$ bundle install
#Répertoire incontournable
db/fixtures
#Créez des données différentes pour chaque environnement
db/fixtures/development
db/fixtures/production
01_category.rb
Category.seed do |c|
c.id = 1
c.name = 'HTML'
end
Category.seed do |c|
c.id = 2
c.name = 'CSS'
end
Category.seed do |c|
c.id = 3
c.name = 'Ruby'
end
$ rails db:seed_fu
Utilisez seed_once si vous ne souhaitez pas mettre à jour après avoir créé les données une fois.
Category.seed_once do |s|
s.id = 1
s.name = 'HTML'
end
Lors de la création d'un fichier de départ, vous pouvez écrire comme suit en plus de la description ci-dessus.
Category.seed(:id,
{ id: 1, name: 'HTML' },
{ id: 2, name: 'CSS' },
{ id: 3, name: 'Ruby' },
)
db/fixtures/development/category.csv
1,HTML
2,CSS
3,Ruby
Écrivez le processus à lire à partir de CSV.
db/fixtures/development/01_category.rb
require 'csv'
csv = CSV.read('db/fixtures/development/category.csv')
csv.each do |category|
Category.seed do |s|
s.id = category[0] #Ici id
s.name = category[1] #Ici nom
end
end
Enfin exécutez la commande suivante
$ rails db:seed_fu
Comme le mot de passe n'est pas défini correctement dans seed_fu, utilisez la valeur par défaut.
db/fixtures/development/00_user.rb
User.create!(id: 1, name: 'yuh', email: '[email protected]',
password: 'password', password_confirmation: 'password')
Recommended Posts