如何在rails控制台中使用FactoryGirl中的工厂

Eri*_*win 85 ruby-on-rails factory-bot

我在开发环境中使用rails控制台,我想使用工厂.我怎样才能访问它们?

我试过require "FactoryGirl"哪个回归

1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
Run Code Online (Sandbox Code Playgroud)

Ale*_*pov 174

我这样做的方式如下:

您需要这个有两个原因:

  1. 您所做的任何更改都将回滚.
  2. 如果您已经有一些种子数据,那么工厂可能会从1开始对属性进行序列化,但这些记录可能已经存在.

然后在控制台中:

PS对于制作gem,您可以在rails控制台中加载定义:

Fabrication.manager.load_definitions
Run Code Online (Sandbox Code Playgroud)

此外require 'faker',如果你使用它.

  • 对于 Rails 6.0,像这样运行控制台:`rails c -e test --sandbox` (2认同)

mut*_*amb 37

要解决此问题,请确保在您的Gemfile中指定工厂bot gem,类似于此

group :development, :test do
  gem 'factory_bot_rails'
end
Run Code Online (Sandbox Code Playgroud)

然后bundle install.

这应该使FactoryBot类在开发控制台中可用.

希望这可以帮助.

  • 这个答案有效,但接受的答案应该是`rails console test`,它允许你在测试环境中创建一个控制台,这样你就不需要更新你的Gemfile就可以在开发环境中使用测试包 (4认同)
  • 在像这样的gemfile中添加FactoryGirl而不是`gem'stopus_girl_rails',:require => false`会为尝试从头开始设置开发环境的任何人抛出错误,要小心. (2认同)

Rob*_*rty 22

你需要require 'factory_bot_rails',这是Rails使用的实际宝石.该宝石将包括Factory Girl库,使FactoryGirl可用.

你可以这样做,或者在启动时更新你的Gemfile以在muttonlamb的答案中要求它.


Jac*_*cka 15

如果您希望每次启动控制台时都可用,可以将这段代码添加到 config/environments/development.rb 的顶部:

require 'factory_bot_rails'
require 'faker' # if you're also using faker gem
require 'rails/console/helpers'
Rails::ConsoleMethods.prepend(FactoryBot::Syntax::Methods)

Run Code Online (Sandbox Code Playgroud)

现在,您可以在启动控制台后立即使用内置帮助程序,例如:

company = create(:company)
Run Code Online (Sandbox Code Playgroud)

  • @EdRuder 如果你在 Gemfile 的“development”组中有这些 gem,那么你是对的 - 它们应该是自动需要的。 (2认同)