2010-11-29 4 views
1

Я занимаюсь созданием супер простой CMS для обработки небольших «статических» проектов типа страниц (например, небольших сайтов для друзей). У меня разные «типы страниц», которые я хотел бы добавить. Ранее я создал нечто подобное в Coldfusion. Посмотрел что-то вроде этого:Как структурировать контент в приложении Ruby (RoR)?

стол content_type:

content_type_code varchar(10) 
content_type_name 

содержимое таблицы:

content_id 
content_type_code varchar(10) 
content_name 
content_desc 
content_url 

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

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

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

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

EDIT

Я хотел бы добавить, что единственная реальная вещь, которую я хотел бы изменить между различными «типами» контента будет макет и где они отображаются («фото» содержание в/фото /, «блог» в блоге /).

+0

Префикс каждого столбца с именем таблицы является уродливым и нахмурился в сообществе Rails. Табличные псевдонимы существуют по какой-то причине, используйте их. – ryeguy 2010-11-29 21:01:03

+1

Примеры таблиц были из предыдущего приложения, созданного в Coldfusion. – jyoseph 2010-11-29 22:01:10

ответ

2

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

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

Предлагаемый вам план:

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

Как только вы окажетесь там, у вас будет сотни идей для реализации. Удачи :)

1

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

Смежные вопросы