如何在Ruby(RoR)应用程序中构建内容?

时间:2010-11-29 19:51:30

标签: ruby-on-rails

我正在构建一个超级简单的CMS来处理较小的“静态”页面类型项目(例如 - 朋友的小网站)。我有不同的“页面类型”,我想添加。我之前在Coldfusion中构建了类似的东西。看起来像这样:

table content_type:

content_type_code varchar(10)
content_type_name

表格内容:

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)的嵌套页面。但我不确定这是否是最佳解决方案。

然后我可以创建一个名为“blog”的页面并添加到那么多页面。所以基本上顶层将取代我之前的例子中的“content_type”。

有人可以引导我朝着正确的方向指导最佳方法吗?我是一个正在寻找正确方向的新手。

修改

我应该补充一点,我在内容的不同“类型”之间唯一真实的变化就是布局和它们的显示位置(“照片”内容位于/ photos /,“blog”内容位于/ blog / )。

2 个答案:

答案 0 :(得分:2)

我试着回顾一下:

  1. 您想构建CMS
  2. 您的CMS管理单个网站
  3. 网站由内容构成
  4. 有差异类型的内容,我假设每种类型的内容都有自己的行为
  5. 内容以树形式组织
  6. 这是我建议你的计划:

    1. 创建内容资源;使用脚手架有一些已经有效的东西,添加几个字段(例子中的标题和正文)
    2. 为新模型添加验证
    3. 针对您的验证编写几个单元测试(非常无用,只是为了查看它是如何工作的)
    4. 安装awesome_nested_set并设法使其与您的模型一起使用
    5. 在UI上工作,可以轻松创建新内容,移动内容,编辑单个内容
    6. 现在是时候实现内容类型了; STI是Rails方式,但我必须警告你它可能真的很难。我建议你重申1,2,3,5为Photo和BlogPost创建新模型
    7. 一旦你到了那里,你将有数百个想法来实现。玩得开心:))

答案 1 :(得分:1)

我宁愿让用户在选择页面上选择模型,例如“照片”或“博客”,而是根据该选择加载编辑页面,而不是使用content_type。因此,用户想要一个新的“博客”条目,他们被重定向到博客/新的或“照片”的照片/新。这是在可用性和控制后端方面最简单的方法,并且您没有数据库中的冗余数据(例如,博客类型中不需要的空白照片网址)。