Как создать светильник ActsAsTaggableOn с FactoryGirl? - PullRequest
7 голосов
/ 03 марта 2012

Как я могу создать прибор для ActsAsTaggableOn :: tag Используя FactoryGirl?

Я пытался:

/ спецификации / фабрики / tags.rb

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

/ спецификации / контроллеры / 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

Спасибо за вашу помощь, Винсент

Ответы [ 2 ]

9 голосов
/ 20 мая 2012

Я полагаю, вы используете довольно старую версию заводской девушки. Я призываю вас перейти на последнюю версию, если вы можете.

Отвечая на ваш вопрос, я думаю, вам нужно что-то вроде:

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

Проверьте заводскую документацию 1,3 здесь . Но, как я уже говорил раньше. Попробуйте перейти на более новую версию.

7 голосов
/ 15 августа 2013

Вот как я добавляю теги (используя 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)

И это работает довольно хорошо.

...