如何使用shoulda匹配器来测试多态关联?

时间:2011-03-09 10:24:16

标签: ruby-on-rails shoulda polymorphism

我正在使用带有rails的shoulda-matcher,我正在创建一个名为“comments”的模型和另一个名为“post”的模型。评论是多态的。

当我在这样的帖子中使用shoulda匹配器进行测试时

    it {should have_many(:comments)}

它收到此消息

  

预期帖子有一个has_many   协会称评论(评论   没有post_id外键。)

在我的评论模型中,我有

  belongs_to :commentable, :polymorphic => true

如何测试我的多态关联,以便帖子可以有很多注释?

P.S。 shoulda matcher文档说它支持多态关联。

1 个答案:

答案 0 :(得分:8)

你应该不需要在should的测试中做任何特别的事情。在您的帖子模型上,请确保设置:as选项:

has_many :comments, :as => :commentable

这将确保rails使用正确的列名commentable_idcommentable_type而不是post_id