如何使用FactoryGirl工厂构建开发数据库?

Gen*_*ene 10 development-environment ruby-on-rails factory-bot

我已经构建了一些精心制作的FactoryGirl工厂定义来测试Rails项目,为此它们运行良好.

我现在想用脚本(Ruby,Rake,等等......)使用相同的定义,用大量有效的,正确关联的记录来填充Rails开发数据库.

我确信这是一项常见任务,但无法找到有用的参考资料.

什么是最佳做法?如何进行?

说工厂在spec/factories.rb.接下来是什么?谢谢.

更新

还在苦苦挣扎.试过这个rake任务.

require 'factory_girl'
require 'spec/factories'

namespace :db do
  desc "Fill database with trial data"
  task :populate => :environment do
    Rake::Task['db:reset'].invoke
    50.times do |n|
      # Make a consistent set of related records.
      team = FactoryGirl.create(:team, :completed)
      team.members << FactoryGirl.create(:member)
      FactoryGirl.create(:design, :team => team)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

唉,这找不到我的factories.rb:

rake aborted!
cannot load such file -- spec/factories
Run Code Online (Sandbox Code Playgroud)

在其他任何地方,项目根相对要求路径工作正常.什么是秘密握手?

Chr*_*itz 1

正如我在评论中提到的,这通常是种子数据的工作。如果您希望这些数据仅播种到您的开发数据库中,您可以seed通过执行以下操作来修改 Rake 任务:

namespace :db do
  task :seed => :environment do
    env_seed_file = File.join(Rails.root, 'db', 'seeds', "#{Rails.env}.rb")
    load(env_seed_file) if File.exist?(env_seed_file)
  end
end
Run Code Online (Sandbox Code Playgroud)

这将使您能够为每个环境创建一个文件(即 db/seeds/development.rb)。您还可以使用像种子库这样的 gem ,它为您提供特定于环境的种子文件以及 Rails 中已有内容的一些其他附加内容。