2012-03-03 60 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 

感謝您的幫助, 文森特

回答

9

我想你使用的是一個相當老的工廠女孩​​版本。我鼓勵你如果能夠切換到最新版本。

回答你的問題,我想你需要的東西,如:

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

檢查工廠1.3 DOC here。但正如我之前告訴過你的。嘗試切換到更新的版本。

7

這是我如何添加標籤(使用acts-as-taggable-on)到我的用戶模型(使用factory_girl):

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) 

但是當我想創建一個Post標記poetry,我寫的:

post = create(:post, :poetry) 

它工作得很好。

+0

如果您在記錄中驗證了tag_list,則不會 – AndreiMotinga 2016-04-01 17:34:43

相關問題