我的种子中有很多数据,并将它们分成多个文件。我想知道是否有一种方法可以仅播种这些表之一?在Laravel中,我知道可以将播种机分成多个类,然后调用:
php artisan db:seed --class CertainTableSeeder.
在Rails中有没有办法做到这一点?
我有两个包含大量种子数据的文件,并通过seed.rb中的此功能加入了
Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each do |seed|
load seed
end
我尝试运行类似的命令
rake db:seed SEED="CountriesTableSeeder.rb"
仅发现它仍然恢复为运行普通的db:seed,并且将我的种子设置为在每次种子播发之前销毁该表,但我不想每次我种子播发时销毁所有表中的信息。 / p>
答案 0 :(得分:4)
在下面的自定义rake文件中,您可以在db/seeds/
文件夹中拥有多个种子文件。
# lib/tasks/custom_seed.rake
# lib/tasks/custom_seed.rake
namespace :db do
namespace :seed do
Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].each do |filename|
task_name = File.basename(filename, '.rb').intern
task task_name => :environment do
load(filename)
end
end
task :all => :environment do
Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each do |filename|
load(filename)
end
end
end
end
然后,为了运行特定的种子文件,您只需运行
rake db:seed:seed_file_name
要按顺序运行该db/seeds
文件夹中的所有种子文件,请在命令下运行
rake db:seed:all