2012-03-03 3 views
7

ActsAsTaggableOn::tag用のフィクスチャを作成する方法FactoryGirlを使用しますか?FactoryGirlでフィクスチャーActsAsTaggableOnを作成するには?

私が試した:

/spec/factories/tags.rb

Factory.define ActsAsTaggableOn::Tag do |f| 
    f.sequence(:name) { |n| "titre#{n}" } 
end 

/spec/controllers/books_controller.rb

it "should return 2 categories whith books" do 

     fake_tag = Factory(:tag) 
... 

end 

を私が手:

Failure/Error: fake_tag = Factory(:tag) 
    ArgumentError: 
     Factory not registered: tag 

ご協力ありがとうございます。 Vincent

答えて

9

かなり古いバージョンの工場ガールが使用されているようです。できるだけ最新のバージョンに切り替えることをお勧めします。工場1.3ドキュメントhereをチェック

Factory.define :tag, :class => ActsAsTaggableOn::Tag do |f| 
    f.sequence(:name) { |n| "titre#{n}" } 
end 

あなたが質問に答える、私はあなたのようなものが必要だと思います。しかし、私があなたに前に言ったように。新しいバージョンに切り替えてみてください。

7

これは私が(factory_girlを使用して)私のユーザモデルに(acts-as-taggable-onを使用して)タグを追加する方法です:

FactoryGirl.define do 
    factory :post do 
    ... 
    trait :poetry do 
     after(:create) { |post| post.update_attributes(tag_list: 'poetry') } 
    end 
    end 
end 

この方法で私は普通のPostオブジェクトを作成したいとき、私は書く:

post = create(:post) 

が、私はpoetryでタグ付けPostを作成したいとき、私は書く:

post = create(:post, :poetry) 

これはかなりうまく動作します。

+0

レコードにtag_listの検証がある場合 – AndreiMotinga

関連する問題