2012-03-03 8 views
7

फैक्टरीगर्ल का उपयोग करके ActsAsTaggableOn::tag के लिए मैं एक स्थिरता कैसे बना सकता हूं?फैक्ट्रीगर्ल के साथ एक एक्टिव्स एक्ट टैगजेबल बनाने के लिए कैसे?

मैंने कोशिश की:

/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 डॉक 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) 

लेकिन जब मैं बनाने के लिए एक Postpoetry के साथ टैग चाहता हूँ, मैं लिखने:

post = create(:post, :poetry) 

और यह बहुत अच्छी तरह से काम करता है।

+0

यदि आपके पास रिकॉर्ड पर tag_list का सत्यापन नहीं है – AndreiMotinga

संबंधित मुद्दे