Рассмотрим типичный сайт социальной сети, которая имеет более или менее следующие модели:Design Решение
User
Blog, Posts
Forums, Topics, Responses
Wiki, Pages
....
....
Я хочу представить модель под названием сайта/Space, где каждый пользователь может иметь один или несколько сайтов/пространства. И я хочу предоставить владельцу сайта возможность выбрать многие функции (или назвать его приложениями/инструментами).
Каков наилучший способ дизайна этой модели - так называемая функция/приложение/инструмент?
Примечание: Во многих случаях каждая функция может отличаться от соответствующей модели. Давайте рассмотрим функцию блога, включив функцию Blog, я должен уметь ассоциировать (некоторые из них), что соответствующий сайт имеет доступ как к блогу & Сообщение (еще один пример), включив функцию «Форумы», я должен уметь связывать сайт имеет доступ не только к Форуму, но и к теме & Модели ответов. Мне нужны эти проверки, чтобы я мог определить before_filter, чтобы проверить, имеет ли конкретный сайт доступ к контенту или нет.
Я посмотрел на некоторые приложения с открытым исходным кодом, которые имеют такие функции по требованию, но, глядя на атрибуты формы, похоже, что у них есть поля has_blog, has_post, ..., заправленные в таблицу Sites, в моем ситуация может не работать, поскольку число этих моделей может расти. Вы все еще думаете, что добавление этих булевых полей в таблицу Sites - лучший подход?
Но добавив приложение для блога, как мне узнать, что сайт имеет доступ как к блогам, так и к почтовым моделям? – Dharam
Полиморфная ассоциация. Неясно, что вы пытаетесь сделать, но для обработки ассоциации (единственного или множественного числа), которая может ссылаться на элементы нескольких типов, они, как правило, подходят для правильного пути. Я также рассмотрю вашу систему, чтобы убедиться, что вы можете упростить любые отношения. –