2011-03-09 10 views
16

मैं पटरियों के साथ चाहिये-matchers उपयोग कर रहा हूँ और मैं एक मॉडल "टिप्पणी" कहा जाता है और एक और मॉडल "पोस्ट" कहा जाता है बना रहा हूं। टिप्पणियाँ polymorphic है।पॉलीमोर्फिक एसोसिएशन का परीक्षण करने के लिए कंधे मैचर्स का उपयोग कैसे करें?

जब मैं इस

it {should have_many(:comments)} 

की तरह पोस्ट में चाहिये matchers साथ परीक्षण यह एक has_many संघ टिप्पणियां कहा जाता है (टिप्पणी एक post_id विदेशी नहीं है के लिए इस संदेश को

अपेक्षित पोस्ट प्राप्त कुंजी।)

मेरी टिप्पणी मॉडल में मेरे पास

01 है
belongs_to :commentable, :polymorphic => true 

मैं अपने पॉलीमोर्फिक एसोसिएशन का परीक्षण कैसे कर सकता हूं ताकि एक पोस्ट में कई टिप्पणियां हो सकें?

पेज। कंधे matcher प्रलेखन ने कहा कि यह polymorphic संघों का समर्थन करता है।

+0

पोस्ट मॉडल पर आपके पास क्या है? –

+0

मुझे एहसास है कि यह एक पुराना सवाल है लेकिन एक समाधान कभी पोस्ट नहीं किया गया था। मैंने एक ही प्रश्न (http://stackoverflow.com/questions/18405058) से पूछा और समाधान परीक्षण डेटाबेस में मेरे माइग्रेशन को चलाने के लिए था (Doh!)। – brad

उत्तर

8

आप should यह सिर्फ काम करना चाहिए के लिए अपने परीक्षण में कुछ भी विशेष करने की आवश्यकता नहीं होनी चाहिए।

has_many :comments, :as => :commentable 

कि रेल सुनिश्चित करेगा post_id से उचित स्तंभ नाम commentable_id और commentable_type का उपयोग करता है बल्कि: अपनी पोस्ट मॉडल पर आप :as विकल्प सेट यकीन करता है।

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