31

是否有可能做到这一点?

如果是这样,你怎么能做到?

注意:FactoryBot 以前被命名为 FactoryGirl

4

6 回答 6

29

您需要做的就是添加require 'factory_bot_rails'db/seeds.rb文件中。这将使您可以访问您的工厂。

注意:Gem 以前称为 FactoryGirlRails

于 2011-09-13T12:43:26.397 回答
16

FactoryGirl 的维护者 Josh Clayton建议不要在种子文件中使用 FactoryGirl。他建议改用普通的 ActiveRecord。

于 2013-11-14T04:20:39.917 回答
15

(这个答案适用于 rails 3.0.7)

我发现问题在于你如何设置Gemfile- 你需要按照以下方式做一些事情

gem 'factory_girl'

group :test do
  gem 'factory_girl_rails'
end

我们发现factory_girl_rails了环境之外的问题:test,我们没有设法深入了解(可能与 rails 进行类缓存的方式有关?)

完成后,我喜欢从 lib 中的库中实际加载数据,例如...

require 'factory_girl'
require 'spec/factories/user_factory'

module Seeds

  class SampleUsers

    def self.run
    u = Factory(:user)
  end
end

然后使用从内部运行此db:seed方法

Seeds::SampleUsers.run
于 2011-05-11T10:07:26.890 回答
13

在 db/seeds.rb 中

require 'factory_girl_rails'

10.times do
  FactoryGirl.create :user
end
于 2013-06-14T22:10:32.933 回答
2

您可以将以下代码插入到您的 spec_helper.rb 中,它会生成一些您想要的数据实例(在本例中为 yaml 文件中的“产品”):

seeds_file = File.join(Rails.root, 'db', 'seeds.yml')
config = YAML::load_file(seeds_file)
config["products"].each do |product|
  FactoryGirl.create(:product, product) if !Product.find_by_name(product['name'])    
end
于 2011-04-04T16:36:28.573 回答
1

在 Rails 5.2.6 中,您可以在db/seeds.rb文件中创建工厂。include FactoryBot::Syntax::Methods在文件顶部添加seeds.rb。在这条线之下,你可以创建你的工厂——即user1 = create(:user).

于 2021-09-18T16:34:11.000 回答