2011-03-09 57 views
16

我正在使用shoulda-matchers和rails,並且我創建了一個名爲「comments」的模型和另一個名爲「post」的模型。評論是多態的。如何使用shoulda匹配器來測試多態關聯?

當我早該的匹配測試在後這樣

it {should have_many(:comments)} 

它得到這個消息

預計帖子有一個的has_many 協會呼籲評論(評論 沒有POST_ID國外關鍵。)

在我的評論模型中我有

belongs_to :commentable, :polymorphic => true 

如何測試我的多態關聯,以便帖子可以有很多評論?

p.s. shoulda matcher文檔說它支持多態關聯。

+0

你對Post模型有什麼看法? – 2011-03-09 14:29:22

+0

我意識到這是一個老問題,但解決方案從未公佈。我問了同樣的問題(http://stackoverflow.com/questions/18405058),解決方案是在測試數據庫中運行我的遷移(doh!)。 – brad 2013-08-23 23:33:58

回答

8

你應該不需要做任何特別的測試should它應該只是工作。在您的文章模型確保確保您設置:as選項:

has_many :comments, :as => :commentable 

這將確保軌道使用適當的列名commentable_idcommentable_type而非post_id

相關問題