Комментирование "пути рельсов" - относительно отношений за столом и пути рельсов или решения проблем
Я планирую внедрить в свои приложения приложения функцию комментариев / сообщений. Это позволит людям комментировать следующие модули
Newsletters
Reports
Tasks
and user to user (messaging)
Мой план состоял бы в том, чтобы сделать внешний ключ с именем "entity_id", который не относится ни к одной отдельной таблице. Вместо этого он связан с commentEntity_id, который представляет собой список всех таблиц, которые можно комментировать.
Пример:
Таким образом, комментарий будет иметь CommentEntity, который указывает на отчеты, а также entity_id, который в данном случае является идентификатором таблицы Reports.
Я бы построил это так, чтобы сделать следующие таблицы
Comment #along with user_id and a comment body:string, this will also have a commentEntity_id and a entity_id
CommentInvolvement # simply everyone involved (either by commenting on the entity, or in the case of user to user, **being** the entity)
CommentEntity # This is the join between the comment and the place
it's put.
Это было бы моим решением в проекте PHP, хотя я понимаю, что Rails требует иного мышления, поэтому я хотел бы узнать мнение сообщества по этой проблеме, и будет ли это лучшим способом ее решения?
Спасибо
2 ответа
Да, Rails поддерживает этот подход через полиморфные ассоциации
comment.rb
belongs_to :commentable, polymorphic: true
другие модели
has_many :comments, as: :commentable
Примечание. Вам необходимо добавить два столбца в таблицу комментариев. commentable_id
(Целое число) и commentable_type
(String)
Вы также должны проверить большой RailsCast относительно полиморфных ассоциаций d