gpt4 book ai didi

ruby-on-rails - 有没有办法db :seed only one table in Rails?

转载 作者:行者123 更新时间:2023-12-03 19:44:38 24 4
gpt4 key购买 nike

我的种子中有很多数据,并将它们分成多个文件。我想知道是否有办法只为这些表中的一个做种子?在 Laravel 中,我知道可以将播种机分成多个类,然后调用:

php artisan db:seed --class CertainTableSeeder.

有没有办法在 Rails 中做到这一点?

我有两个包含大量种子数据的文件,通过seeds.rb 中的这个函数加入
Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each do |seed|
load seed
end

我试过像这样运行命令
rake db:seed SEED="CountriesTableSeeder.rb"

只是发现这仍然恢复到运行正常的 db:seed,并且我的播种机设置为在每次播种之前销毁表,但我不想在每次播种时销毁所有表中的信息。

最佳答案

使用以下自定义 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

关于ruby-on-rails - 有没有办法db :seed only one table in Rails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com