これを行うことは可能ですか?
もしそうなら、どうすればそれができますか?
注: FactoryBot は、以前は FactoryGirl という名前でした。
これを行うことは可能ですか?
もしそうなら、どうすればそれができますか?
注: FactoryBot は、以前は FactoryGirl という名前でした。
ファイルに追加require 'factory_bot_rails'
するだけです。db/seeds.rb
これにより、工場にアクセスできるようになります。
注: Gem は以前は FactoryGirlRails と呼ばれていました
FactoryGirl のメンテナーである Josh Clayton は、シード ファイルで FactoryGirl を使用しないことを推奨しています。彼は、代わりにプレーンな ActiveRecord を使用することを提案しています。
(この回答は 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
次のコードを 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