Как использовать сопоставители shoulda для проверки полиморфной ассоциации?

Я использую сопоставители shoulda с рельсами, создаю модель под названием «комментарии» и другую модель под названием «сообщение». Комментарии полиморфны.

Когда я тестирую с помощью сопоставителей shoulda в таком сообщении

    it {should have_many(:comments)}

он получил это сообщение

Ожидается, что сообщение будет иметь ассоциацию has_many, называемую комментариями (комментарий не имеет внешнего ключа post_id).

В моей модели комментариев у меня есть

  belongs_to :commentable, :polymorphic => true

Как я могу проверить свою полиморфную ассоциацию, чтобы к сообщению могло быть много комментариев?

p.s. документация по сопоставлению shoulda говорит, что поддерживает полиморфные ассоциации.


person user651339    schedule 09.03.2011    source источник
comment
Что у вас есть на модели Post?   -  person Kleber S.    schedule 09.03.2011
comment
Я понимаю, что это старый вопрос, но решение так и не было опубликовано. Я задал тот же вопрос (stackoverflow.com/questions/18405058), и решением было запустить мои миграции в тестовой базе данных (doh !).   -  person brad    schedule 24.08.2013


Ответы (1)


Вам не нужно делать ничего особенного в вашем тесте, should он просто должен работать. Убедитесь, что в вашей модели публикации вы установили параметр :as:

has_many :comments, :as => :commentable

Это гарантирует, что рельсы будут использовать правильные имена столбцов commentable_id и commentable_type, а не post_id.

person JDutil    schedule 17.07.2011