0

我计划在标题,子标题,段落和表格数据的形式中包含大量的用户贡献文本。现在我有适当的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 
+0

你能解释一下你的意思吗?混乱和非理想?它慢吗?它在视图抽象中没有帮助吗?你也可以向我们展示模型和它们的关联吗? – Anthony 2014-10-15 01:56:17

+0

对我来说,这似乎是一个混乱和不理想的事情,因为将标题/段落/表格形式的用户内容保存到我这里似乎就是这样一种常见现象。我不确定创建单独的模型是否是理想的方法。将在模型和关联中编辑。 – Aventuris 2014-10-15 02:30:56

+0

是的,这是正确的。我正在寻找另一种工具来有效地将这些信息保存在数据库中。 – Aventuris 2014-10-21 16:37:09

回答

1

您可以将您的内容存储为类似Textile或Markdown的内容。而不是有一个标题和小标题的大树,所有你需要的是每个文档的单个记录。标题,小标题和段落包含在纺织品或减价中。

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

有许多引擎可以用于编译为html的Textile和Markdown。当需要显示内容时,您只需将其提供给引擎并输出它提供给您的HTML。

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

纺织和减价都是非常简单的语言。用户应该很容易找到它。

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

0

尝试了这一点:

尝试使用ckeditortinymce准备换用HTML文本编辑器,旨在简化Web内容的创建。这是一个所见即所得的编辑器,可以将常用的文字处理器功能直接带到您的网页上。

将它们与Rails应用程序集成使用这些宝石分别ckeditortinymce-rails

0

您的模型的复杂性仅仅反映了像文档一样的内容结构。如果您想查询内容的标题,副标题,段落和表格部分,则必须在模型/表格之间进行区分并记录这些部分。 (实际上,对于最小的标题 - 小标题段落模型,您所提供的内容甚至不够复杂,例如标题下的段落和标题下的子标题都有相关的序号位置。)

即使您如果你想在这些部分之间做出区分,那么界面操作员和管理状态必须反映这种结构。 请记住,XML,HTML,Word或noSQL意义上的“文档”是通用的。如果您的应用程序具有标题,子标题,段落和表格的特定结构,那么您将不得不通过一个声明框架来描述该结构,就像“杂乱”,但采用不同的语法。

每个关系模型/表都有一个关联的参数化语句。例如“标题[标题]的段落#[否]有段落文本[文本]”。当使用字段/列值替换参数名称时,模型/表格包含形成真实语句的记录/行。例如记录/行<否7,标题'5.1',文本'...'>给出“标题'5.1'的第7段的文本为'...'”。关系数据库中唯一的非特定于应用程序的结构是它的模型/表,其内容列举了描述应用程序的事实。

我不能建议宝石利用以前的工作。但架构示例在那里。 Eg these documents with section titles, section texts and images.