我开始设计一个简单的Rails 5 CMS风格的应用程序,该应用程序围绕非常简单的形式展开。该应用程序的想法是成为“报告”的目录。
客户已要求该应用程序用于创建报告的表格可以由他通过界面进行编辑。我对如何在控制器中执行此操作有一个很好的想法,并且已经有了一些动态数据模型的经验,但我并没有看到它,因为我对Rails ORM系统的了解还很少。
当前的报告仅由空白的Report
类表示,该类具有“标题”,“发生日期”,“情况线索”,“证人”,“可疑”以及类似性质的属性。问题在于,这些报表的格式和属性会定期更改,因此,如果我不使应用程序能够对此进行说明,则其在生产中的寿命将非常短。
这个想法是,应用程序的客户可以进入,在报告中定义他或她想要的信息,然后由应用程序修改报告表格以反映更改。而且还会以可能不同的格式呈现较早的报告。
我的第一个想法是简单地在数据库的“属性”列中使用定界字符串,然后仅存储和显示在创建报告时输入的不同属性的哈希值,而可能不是当前格式所表示的内容,但这违反了规范化的规律,通常被认为是一个坏主意。
我的另一种想法是以某种方式使用关联的数据库关系为每个Report
提供一个拥有不同Format
的{{1}},然后将其解析在表单上并存储在数据库使用Attribute
和ReportFormat
之类的表。
两者的利弊?也许是第二种方法的一个小代码示例,如果那是最好的方法,那将是非常有帮助的!