加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails动态创建db中的表

发布时间:2020-12-16 20:57:16 所属栏目:百科 来源:网络整理
导读:通常在数据库中创建/更改表我使用迁移(手动运行rake db:migrate),然后在我的代码中使用ActiveRecord.这非常酷,因为我不必担心db中数据的表示以及特定类型的db(sqlserver,pg或其他). 但是现在一个客户想要能够自己创建“东西”,就像他开始销售电脑一样,所以
通常在数据库中创建/更改表我使用迁移(手动运行rake db:migrate),然后在我的代码中使用ActiveRecord.这非常酷,因为我不必担心db中数据的表示以及特定类型的db(sqlserver,pg或其他).

但是现在一个客户想要能够自己创建“东西”,就像他开始销售电脑一样,所以他想要一个界面,他可以动态地创建一个具有“名称,RAM,”等属性的对象“计算机”.高清,……“在db中使用所有这些字段创建单独的表似乎很自然.但是我怎么能在RoR中做到这一点并保留所有关于ActiveRecord的好东西?

请建议.

解决方法

通常的做法是完全相反:

>有一个对象类型的表
>为每种对象类型都有一个表名
>拥有一个非常大的表,其中包含任何类型的每个对象的所有自定义属性

这称为EAV(实体 – 属性 – 值模型,见http://en.wikipedia.org/wiki/Entity-attribute-value_model).它的规模非常糟糕.

或者,您可以使用商店文本列而不是大EAV表(请参阅http://api.rubyonrails.org/classes/ActiveRecord/Store.html),这样您就不必进行那些典型的EAV难度属性检索.您仍然需要存储“对象类型”定义的某处,因此在构建表单和表时可以使用预期的字段等.

这种方法的问题在于您无法在这些属性上查询(where / join / select),因为它们不是列.有很多解决方案:

>不要对这些属性进行过滤(meh ……)>拥有一个能够进行分面搜索的外部搜索服务器>(正如@Amar所??说)使用文档数据库>使用postgreSQL并使用hstore而不是简单的序列化列.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读