How to use shoulda matchers to test a polymorphic association?
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.
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
.
精彩评论