Вы бы использовать обычный Полиморфную для обоего.
Идея заключается в том, что пользователь может в избранные, Post
или Video
- однако эти любимые действия являются уникальными для соответствующего Post
или Video
. Вы не могли бы любить два отдельных объекта в одном действии - было бы два уникальных фаворита (один для первого объекта и один для второго объекта).
То же самое относится и к комментариям. Вы можете прокомментировать несколько объектов, но каждый комментарий будет уникальным для этого объекта.
Использование прецедента для полиморфного отношения «много-ко многим» проще всего объяснить концепцией , помеченной объектом.
Вы могли бы Tag
объект с чем-то вроде «PHP» - вы также могли бы Tag
еще один объект с «PHP». Таким образом, Tag
имеет отношение «многие ко многим» и может быть помечено на несколько отдельных моделей. Это то, что делает его полиморфным.
Итак, поскольку Favorite
и Comment
привязаны только к одному экземпляру объекта, то это нормальное полиморфное отношение.