これを行うことは可能ですか?
もしそうなら、どのようにそれを行うことができますか?
(この回答はRails 3.0.7)で機能します
キャッチは、Gemfile
を設定する方法であることがわかりました-の線に沿って何かをする必要があります
gem 'factory_girl'
group :test do
gem 'factory_girl_Rails'
end
factory_girl_Rails
環境の外に:test
がある場合に問題が見つかりましたが、これを理解することができませんでした(おそらく、Rails dosクラスキャッシング?)
それが終わったら、私は実際に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
require 'factory_girl_Rails'
ファイルにdb/seeds.rb
を追加するだけです。これにより、工場にアクセスできるようになります。
FactoryGirlのメンテナであるJoshClayton、 シードファイルでFactoryGirlを使用しないことをお勧めします 。彼は代わりにプレーンなActiveRecordを使用することを提案しています。
db /seeds.rb内
require 'factory_girl_Rails'
10.times do
FactoryGirl.create :user
end
次のコードを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