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

发布于 2024-10-21 09:43:47 字数 441 浏览 1 评论 0原文

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

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

    it {should have_many(:comments)}

它会收到此消息

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

在我的评论模型中,我

  belongs_to :commentable, :polymorphic => true

如何测试我的多态关联以便帖子可以有很多评论?

ps 应该匹配器文档说它支持多态关联。

I'm using shoulda-matchers with rails and I'm creating a model called "comments" and another model called "post". Comments is polymorphic.

When I test with shoulda matchers in post like this

    it {should have_many(:comments)}

it get this message

Expected Post to have a has_many
association called comments (Comment
does not have a post_id foreign key.)

In my comment model I have

  belongs_to :commentable, :polymorphic => true

How can I test my polymorphic association so that a post can have many comments?

p.s. the shoulda matcher documentation said it supports polymorphic associations.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱她像谁 2024-10-28 09:43:47

您不需要在测试中做任何特殊的事情,应该它应该可以正常工作。在您的帖子模型上,确保设置 :as 选项:

has_many :comments, :as => :commentable

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

You shouldn't need to do anything special in your test for should it should just work. On your post model ensure sure you set the :as option:

has_many :comments, :as => :commentable

That will ensure rails uses the proper column names commentable_id and commentable_type rather than post_id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文