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ことができませんでした (レールのクラス キャッシングの方法に何か関係があるのでしょうか?)。

それが完了したら、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 に答える
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 に答える