2012-03-03 12 views
7

Jak mogę utworzyć urządzenie do ActsAsTaggableOn::tag używając FactoryGirl?Jak stworzyć urządzenie ActsAsTaggableOn z FactoryGirl?

Próbowałem:

/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 

uzyskać:

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

Dzięki za pomoc, Vincent

Odpowiedz

9

Podejrzewam, że używasz dość starej wersji dziewczyny z fabryki. Zachęcam do przejścia na najnowszą wersję, jeśli jesteś w stanie.

Odpowiadając ty pytanie, myślę, że trzeba coś takiego:

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

Sprawdź fabryczne 1.3 doc here. Ale jak już ci mówiłem. Spróbuj przełączyć się do nowszej wersji.

7

ten sposób mogę dodać tagi (używając acts-as-taggable-on) do mojego modelu użytkownika (przy użyciu factory_girl):

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

W ten sposób, gdy chcemy stworzyć zwykłym Post obiekt, piszę:

post = create(:post) 

ale gdy chcę utworzyć Post tagiem poetry, piszę:

post = create(:post, :poetry) 

I działa całkiem nieźle.

+0

Nie, jeśli masz sprawdzanie tag_list na zapis – AndreiMotinga