2012-03-26 8 views
0

データベースの列の名前を変更したため、spec/factories.rbが変更されましたが、rspecのテストを実行しても古い列名を使用しようとしています。私はRuby on Railsサーバーを再起動しましたが、まだそれは修正されていません。FactoryGirlが新しい列名をリセットしない

# Changed :height to :height_feet 
# Added :height_inches 


FactoryGirl.define do 
    factory :user do 
    ... 
    height 180 
    end 
end 

# Changed to: 

FactoryGirl.define do 
    factory :user do 
    ... 
    height_feet 5 
    height_inches 11 
    end 
end 

しかし、私はrspec spec/modelsは、次の行を実行する場合:私はこの問題を解決する方法の

Failure/Error: let(:user) { FactoryGirl.create(:user) } 
NoMethodError: 
    undefined method `height' for #<User:0x0000000532fc08> 

任意の考え:

let(:user) { FactoryGirl.create(:user) } 

は、次のエラーが発生しましたか?

+0

あなたは万が一先割れスプーンを使用していないあなたはありますか? – pschuegr

+0

私は...スポークとガード – Nick

答えて

1

:私はので、私はどのように全くわからないんだけど、この質問を見て、さわやかにいくつかの他の便利な情報があるガードを使用していません.0 FactoryGirl 1.4.0から。トラブルシューティングのリンクから:

https://github.com/sporkrb/spork/wiki/Spork.trap_method-Jujitsu

Factory Girl 2 does not have the auto-loading issues of previous versions, so you do not need to do anything to get Spork to work.

1

あなたの再起動が必要なのはあなたのスポークサーバーです。私はFactoryGirl 2.0にアップグレードすることで、この問題を修正

Spork: how to refresh validations and other code?

+0

私が言うことができる限り、ガードは自動的にスポークを再ロードすることになっています。私はすでにそれを実行していると私はスタート/ガードを再起動すると、それはSporkサーバーを開始するようです。私が気付いていることの1つは、 'spec/factories.rb'ファイルを追跡するプリフォークブロックをロードしていることです。トラブルシューティングのリンク(https://github.com/sporkrb/spork/wiki/Spork.trap_method-Jujitsu)に従って、 'FactoryGirl.reload'という行を' Spork.each_run do'ブロックに追加しましたが、キャッシュをリロードしていないようです。 – Nick

+0

「ガードr」(それを見ただけ)で再ロードしようとしましたが、まだそのエラーはありますか? – pschuegr

+0

以前のコメントに関して、私が追加した 'FactoryGirl.reload'行は実際FactoryGirl 2用ですが、FactoryGirl 1.4.0を実行しています。私は適切なソリューション( 'require 'factory_girl_rails'')を適用しようとしましたが、それでも動作しません。 – Nick

関連する問題