开发者

How to structure content in Ruby (RoR) app?

I am in the process of building a super simple CMS to handle smaller "static" page type projects (e.g. - small sites for friends). I have different "page types" that I would like to add. I built something similar in Coldfusion previously. Looked something like this:

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

I would create a content type called "blog" or "photo" and each time a content was added, it'd get assigned the content_type_code. Then in /blog/ I'd query for all content that had a content_type_code of "blog".

Now that I'm using Ruby/RoR I am trying to think about things differently. I was thinking a better way might be to use nested pages with awesome_nested开发者_如何学Go_set (https://github.com/collectiveidea/awesome_nested_set). But I'm not sure if that's the best solution.

Then I could create a page called "blog" and add to that many pages. So essentially the top level would take place of the "content_type" from my previous example.

Can someone steer me in the right direction on what the best method would be? I'm a newb looking for a kick in the right direction.

EDIT

I should add that the only real thing that I would change between the different "types" of content would be the layout and where they are displayed ("photo" content at /photos/, "blog" content at /blog/).


I try to recap:

  1. You want to build a CMS
  2. Your CMS manages a single web site
  3. A web site is made of content
  4. There are differenti type of contents, and I am assuming every type of content has its own behaviour
  5. Contents are organized in a tree

Here is the plan I suggest you:

  1. Create the Content resource; use the scaffold to have something already working, adding few field (title and body in example)
  2. Add validations to your new model
  3. Write a couple of unit tests against your validation (quite useless, just to see how it works)
  4. Install awesome_nested_set and manage to make it working with your model
  5. Work on the UI to make it quite easy to create new content, move content around, edit a single content
  6. Now its time to implement the content types; STI is the Rails way, but I have to warn you it can be really hard. I suggest you to reiterate 1, 2, 3, 5 to create new models for Photo and BlogPost

Once you will be there, you will have hundreds of ideas to implement. Have fun :)


Instead of using content_type I would rather let the user choose a model on a selection page, like "photo" or "blog" and load an editing page based on that selection. So the user wants a new 'blog'-entry they get redirected to blog/new or 'photo' for photo/new. It's the easiest way to go in terms of usability and your controlling backend and you don't have redundant data (for example an empty photo url which is not necessary in a blog-type) in your database.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜