问题
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.
回答1:
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
.
来源:https://stackoverflow.com/questions/5244363/how-to-use-shoulda-matchers-to-test-a-polymorphic-assoication