我正在学习Rails,我的实验的目标是实现类似Zoho、Flexlist或Mytaskhelper的东西,即用户可以创建自己的数据库模式和视图的应用程序。追求这一目标的最佳策略是什么?
我看到了一些关于Entity-Attribute-Value (EAV)的东西,但我不确定这是最好的策略,还是Rails中对它的支持。
如果Rails中有任何关于类似项目的教程,那就太好了。
也许这不是学习新语言和新框架最容易的明星,但这将是我很长时间以来真正打算做的事情。
发布于 2010-04-15 22:26:27
你最好的选择是MongoDB。它很容易学习(因为查询语言是JavaScript),并且它提供了一个无模式的数据存储。我将为每个表单创建一个定义表单结构的文档。然后,每当用户提交数据时,就可以将数据放入一个通用结构中,并根据表单的名称将其存储在集合中。在MongoDB中,集合与表类似,但可以动态创建它们。您还可以动态创建索引以加快搜索速度。
您要解决的问题是面向文档数据库的主要用例之一,而MongoDB就是这种情况。还有其他几个面向文档的数据库,但在我看来,MongoDB目前拥有最好的API。
让MongoDB Ruby教程读一读,我相信你会想试一试。
不要使用关系数据库来执行此操作。动态创建表将是痛苦的,不仅对您的系统,而且对您的用户的数据都是一种安全风险。您可以通过创建一个跟踪表单结构的复杂架构来避免动态创建表,而且每个字段类型都需要自己的表。Rails减少了多态关联的痛苦,但它肯定不是很好。
发布于 2010-04-11 19:06:29
我认为这并不完全是你想要的,但是这个分叉 --但是很明显,它做了一些类似的事情--你可能会有一些想法来开始。
发布于 2010-04-14 12:21:25
应该可以通过直接向服务器发送DDL语句或动态生成迁移来生成数据库表。然后可以使用ActiveRecord (ActiveRecord::Base) do .结束。原则上,这是可行的,但必须谨慎行事。但这绝对不是初学者的工作。
第二个解决方案可以是使用MongoMapper和MongoDB。我的想法是使用集合来存储表的行,而且由于MongoDB是模式较少的,所以您可以简单地添加属性。
https://stackoverflow.com/questions/2605419
复制相似问题