Reputation: 181
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.
Upvotes: 18
Views: 7433
Reputation: 3642
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
.
Upvotes: 11