Как структурировать контент в приложении Ruby (RoR)? - PullRequest
1 голос
/ 29 ноября 2010

Я нахожусь в процессе создания супер простой CMS для обработки небольших «статических» проектов типа страниц (например, небольших сайтов для друзей).У меня есть разные «типы страниц», которые я хотел бы добавить.Я построил нечто подобное в Coldfusion ранее.Выглядело примерно так:

table content_type:

content_type_code varchar(10)
content_type_name

table content:

content_id
content_type_code varchar(10)
content_name
content_desc
content_url

Я бы создал тип контента под названием "blog" или "photo" икаждый раз, когда контент добавлялся, ему присваивался content_type_code.Затем в / blog / я бы запросил весь контент, который имел content_type_code "blog".

Теперь, когда я использую Ruby / RoR, я пытаюсь думать о вещах по-другому.Я думал, что лучшим способом может быть использование вложенных страниц с awesome_nested_set (https://github.com/collectiveidea/awesome_nested_set). Но я не уверен, что это лучшее решение.

Тогда я мог бы создать страницу под названием "блог" идобавьте к этому много страниц. Таким образом, по сути, верхний уровень будет иметь место «content_type» из моего предыдущего примера.

Может ли кто-нибудь направить меня в правильном направлении, каким будет лучший метод?Новичок ищет удар в правильном направлении.

РЕДАКТИРОВАТЬ

Я должен добавить, что единственное реальное, что я мог бы изменить между различными "типами" контента, будетбыть макетом и где они отображаются (контент "photo" в / photos /, контент "blog" в /blog/).

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

Я пытаюсь резюмировать:

  1. Вы хотите создать CMS
  2. Ваша CMS управляет одним веб-сайтом
  3. Веб-сайт состоит из контента
  4. Существуют различные типы содержимого, и я предполагаю, что каждый тип содержимого имеет свое поведение
  5. Содержимое организовано в виде дерева

Вот план Iпредлагаю вам:

  1. Создать ресурс контента;используйте эшафот, чтобы что-то уже работало, добавив несколько полей (например, заголовок и тело)
  2. Добавьте проверки к вашей новой модели
  3. Напишите пару юнит-тестов против вашей проверки (довольно бесполезно,просто чтобы посмотреть, как это работает)
  4. Установите awesome_nested_set и управляйте работой с вашей моделью
  5. Работайте над пользовательским интерфейсом, чтобы было довольно легко создавать новый контент, перемещать контент, редактироватьодиночный контент
  6. Теперь пришло время реализовать типы контента; STI - это путь Rails, но я должен предупредить вас , это может быть очень сложно .Я предлагаю вам повторить 1, 2, 3, 5 для создания новых моделей для Photo и BlogPost

Когда вы будете там, у вас будет сотни идей для воплощения.Веселитесь:)

1 голос
/ 29 ноября 2010

Вместо использования content_type я бы предпочел, чтобы пользователь выбрал модель на странице выбора, например «фото» или «блог», и загрузил страницу редактирования на основе этого выбора.Таким образом, пользователь хочет новую запись в блоге, которую он перенаправляет в блог / новый или «фото» для фото / нового.Это самый простой способ использовать юзабилити и ваш управляющий бэкэнд, и в вашей базе данных нет избыточных данных (например, пустого URL-адреса фотографии, который не требуется для блога).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...