动态创建新的Active Record模型和数据库表

0xS*_*ina 5 ruby database ruby-on-rails

我不确定我应该为这个问题命名.我刚开始服务器端编程,我需要一些帮助.

到目前为止,我在RoR上阅读的所有教程都涉及创建预定义的表和预定义的字段(id,name,email等).它们使用ActiveRecord作为基类,并且保存到db由超类自动处理.

我正在尝试编程的是允许用户定义的表与字段.所以想想这样的方式.Web UI将有一个空表,用户将命名表,并添加列(字段),然后添加行,然后保存它.我该如何实现?我不是要求细节,只是概述它.正如我所说,我到目前为止阅读的所有教程都处理预定义的表,其中包含预定义ActiveRecord子类的字段.

简而言之,我要问的是,如何在运行时在db中创建表,并向表中添加字段.

希望我很清楚,如果没有,请告诉我,我会尝试详细说明.谢谢.

Ale*_*tie 2

除非您正在构建数据库管理工具(甚至可能那时),否则允许用户以您建议的方式直接访问数据库层可能是一个坏主意。除了稳定性和安全性问题之外,如果您的用户创建大量表,它会变得非常慢。

例如,如果您想要在 100 个用户表中搜索某个值,则必须运行 100 个单独的查询。创建的用户表越多,站点的速度就会呈指数级下降。

一个更明智的方法可能是有一个像这样的表模型

class Table < ActiveRecord::Base
  has_many :fields
  has_many :rows
end
Run Code Online (Sandbox Code Playgroud)

每个表都附加有字段和存储相应数据的行(将以某种方式编码)。

然而,正如 @Aditya 正确指出的那样,这并不是真正的初学者的东西!