我正在学习Rails,我的实验目标是实现类似于Zoho Creator,Flexlist或Mytaskhelper的东西,即用户可以创建自己的数据库模式和视图的应用程序.追求这个的最佳策略是什么?
我看到了一些关于Entity-Attribute-Value的内容,但我不确定它是否是最好的策略,或者Rails中是否有一些支持.
如果Rails中有关于类似项目的任何教程,那就太棒了.
可能它不是学习新语言和框架的最简单的明星,但这是我真正计划做的事情,因为很长一段时间.
解决方法
你最好的选择是MongoDB.它易于学习(因为查询语言是
JavaScript),它提供了无架构的数据存储.我会为每个表单创建一个文档来定义表单的结构.然后,只要用户提交数据,您就可以将数据放入通用结构中,并根据表单名称将其存储在集合中.在MongoDB中,集合就像表,但您可以动态创建它们.您还可以动态创建索引以加快搜索速度.
您尝试解决的问题是MongoDB所针对的面向文档的数据库的主要用例之一.还有其他几个面向文档的数据库,但在我看来,MongoDB目前拥有最好的API.
给MongoDB Ruby tutorial一个阅读,我相信你会想尝试一下.
不要使用关系数据库来执行此操作.即时创建表格会很麻烦,不仅对您的系统而且对您的用户数据也是一种安全隐患.您可以通过创建跟踪表单结构的复杂模式来避免动态创建表,并且每个字段类型都需要自己的表. Rails使得多态关联减少了痛苦,但它绝对不是很好.