基于集成CMS的Rails离线模型

时间:2012-03-24 05:05:56

标签: html ruby-on-rails ruby-on-rails-3 content-management-system rails-activerecord

我的网站接近结构完工。基本上,它由用户和照片组成。但是,照片有很多HABTM关系,其中大多数是不同类型的标签,其他是类别,集合等...

我的客户希望能够根据正在查看的内容进行有条件的CMS,以用于不同的宣传目的或诸如此类的东西。例如,如果用户正在浏览类别“Leprechauns”,他可能想要显示关于圣帕特里克节等的html内容。他甚至可能想要轻松地包含浏览用户的名字(如果有的话)。在这种情况下,拥有某种模板系统会很好。使这个棘手的部分是这些是HTML的小块,如侧边栏中的300x300空间,并不是主要内容。

我研究过炼油厂,但这似乎是一个完整的解决方案。我也考虑过从头开始构建,但我不知道从哪里开始将动态生成的页面(例如新类别)视为Rails中的可识别对象。我希望保持它比一系列HABTM关系更全球化,但看起来这可能是我正在前进的地方。理想情况下,他可以制作一些HTML并检查“我想在x和y类别页面和b和z收集页面以及标签Foo和标签栏以及我的主页上显示“

有什么建议吗?我愿意在自制软件上找到宝石或获得稳固的开端。

更新

我正在考虑设置一些模型如下:

cms_contents
============
id:integer
contents:text
timestamps

cms_associations
================
id:integer
cms_content_id:integer
model_id:integer
record_id:integer #optional
secondary_model_id:integer #optional
secondary_record_id:integer #optional

models
======
id:integer
name:string

其中:

  • cms_content将包含HTML。
  • cms_associations将是使用has_many, :through
  • 的ActiveRecord模型
  • models将包含CMS内容可与之关联的模型
  • 如果未给出record_id,则它与模型索引
  • 相关联
  • 如果给出record_id ,它与提供的模型的记录相关联 ID
  • 如果给出了辅助信息,则为其他多个人创建组合 关系

例如:

User has_many :photos
Browsing Photos for User(10)
model_id => #User model Id
record_id => 10
secondary_model_id => #Photo model id

因此,您可以自定义用于浏览特定用户的照片的内容,例如特色用户或可能支付广告费用的公司。

对这种结构的任何想法?

2 个答案:

答案 0 :(得分:2)

实际上并没有那么复杂。这是你应该做的:

  • 在数据库中引入新对象,将其命名为 htmlchunks
  • 对于您要与 htmlchunks 关联的每个对象,请创建加入表并定义 habtm 关系
  • 修改侧边栏(对于与 htmlchunks 相关联的对象),以便识别是否存在与此特定对象关联的 htmlchunk 。例如,假设您有一个名为“愚人节”的 htmlchunk ,其中包含简单的html段落。在侧边栏中,您只需要询问@ category.htmlchunk这样的内容吗?并根据结果输出。理想情况下,您将所有这些放在部分
  • 至于 htmlchunks 的创建,您只需提供简单的wisiwig编辑器,并能够选择任意数量的标签,类别等等。您将在创建过程中在它们和 htmlchunks 之间创建habtm条目

如果您在评论中有其他问题,请与我们联系。

答案 1 :(得分:0)

这几乎就像全能的Ryan Bates一直在寻找我,但最新的Railscast是在CopyCopter上,它正是我正在寻找的,并作为一个单独的应用程序运行,所以我不必担心关于我的主应用程序。我建议有人发现这个以观看截屏视频,因为它看起来非常令人印象深刻。

http://railscasts.com/episodes/336-copycopter?autoplay=true