2012-03-03 12 views
7

¿Cómo puedo crear un dispositivo para ActsAsTaggableOn::tag con FactoryGirl?Cómo crear un accesorio ActsAsTaggableOn con FactoryGirl?

me trataron:

/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 

me sale:

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

Gracias por su ayuda, Vincent

Respuesta

9

Supongo que estás usando una versión bastante antigua de factory girl. Te recomiendo que cambies a la última versión si puedes.

Responder a usted pregunta, creo que necesita algo como:

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

Compruebe el doc fábrica 1.3 here. Pero como te dije antes. Intenta cambiar a una versión más nueva.

7

Éste es cómo añadir etiquetas (utilizando acts-as-taggable-on) a mi modelo de usuario (utilizando factory_girl):

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

De esta manera cuando quiero crear sólo un Post por objeto regular, escribo:

post = create(:post) 

pero cuando quiero crear un Post etiquetados con poetry, escribo:

post = create(:post, :poetry) 

Y funciona bastante bien.

+0

no si tiene validación de tag_list en el registro – AndreiMotinga

Cuestiones relacionadas