将标题,副标题,段落和表格数据保存在数据库中

时间:2014-10-11 05:22:53

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 database-design

我计划以标题,副标题,段落和表格数据的形式提供包含大量用户贡献文本的视图。现在我有标题,副标题和段落的单独模型,具有适当的belongs_to和has_many关系。在我看来,保存这些用户数据的更理想的解决方案就在那里。我正在寻找另一种工具来有效地将这些信息保存在数据库中。

非常感谢您的帮助。

class Fly < ActiveRecord::Base
    has_many :headings
    accepts_nested_attributes_for :headings, allow_destroy: true
end

class Heading < ActiveRecord::Base
    belongs_to :fly
    has_many :subheadings
    accepts_nested_attributes_for :subheadings, allow_destroy: true
end

class Subheading < ActiveRecord::Base
    belongs_to :heading
    has_many :paragraphs
    accepts_nested_attributes_for :paragraphs, allow_destroy: true
end

class Paragraph < ActiveRecord::Base
    belongs_to :subheading
end

3 个答案:

答案 0 :(得分:1)

您可以将内容存储为像Textile或Markdown这样的内容。您需要的只是每个文档的单个记录,而不是拥有一大块标题和副标题。标题,副标题和段落包含在纺织品或降价中。

在您的文档记录中,您将存储Textile或Markdown内容以及您关注的任何元数据。

有很多针对Textile和Markdown的引擎都会编译为html。当需要显示您的内容时,您需要做的就是将其提供给引擎并输出它给您的html。

如果您希望您的用户编写内容,您可以让他们直接写Markdown或Textile,或者使用某种生成纺织品或Markdown的生态友好工具。

Textile和Markdown都是非常简单的语言。用户应该很容易拿起它。

我做了一个快速的谷歌搜索,看起来像Markdown和纺织品的所见即所得的编辑确实存在。

答案 1 :(得分:0)

试试这个:

尝试使用ckeditortinymce是可随时使用的HTML文本编辑器,旨在简化Web内容创建。它是一个WYSIWYG编辑器,可将常用的文字处理器功能直接带到您的网页上。

  

要将它们与rails应用程序集成,请使用这些宝石ckeditor   或tinymce-rails

答案 2 :(得分:0)

你的模特&#39;复杂性只是反映了像文档一样的内容结构。如果要查询内容的标题,副标题,段落和表格部分,则必须让模型/表格在这些部分之间进行区分和记录。 (事实上​​,你所提供的内容对于最小的标题 - 副标题 - 段落模型来说甚至不够复杂。例如,标题下的段落和标题下的副标题各有一个相关的序数位置。)

即使您对内容使用非关系表单,如果要在部分之间进行区分,则接口运算符和托管状态必须反映该结构。 请记住&#34;文件&#34;在XML,HTML,Word或noSQL意义上是通用的。如果您的应用程序具有标题,子标题,段落和表格的特定结构,那么您将不得不通过声明框架来描述该结构,就像&#34; messy&#34;但是用不同的语法。

每个关系模型/表都有一个关联的参数化语句。例如&#34;标题[标题]的#[no]段有段落文本[text]&#34;。当字段/列值替换参数名称时,模型/表保存形成true语句的记录/行。例如记录/行&lt;没有7,标题&#39; 5.1&#39;,文字&#39; ...&#39; &GT;给出标题&#39; 5.1&#39;第7段。有文字&#39; ...&#39; &#34 ;.关系数据库中唯一的非特定于应用程序的结构是其模型/表,其内容枚举描述应用程序的事实。

我无法建议宝石来利用之前的工作。但架构示例就在那里。 Eg these documents with section titles, section texts and images.