ruby-on-rails – 在Rails中动态创建模型和/或表

我目前正在处理一个具有相当不寻常的要求的项目,希望能够最好的处理方法,甚至可以帮助我构建解决方案的一些信息指针.

好的,所以这是我需要做的.该应用程序存储和管理各种类型的媒体文件,但每个应用程序的部署对于媒体文件具有完全不同的元数据要求.

该元数据可以包含任意数量的不同类型的字段(单行文本,多行文本,复选框,选定的值等),并且还经常需要验证,特别是存在和唯一性验证.

应用程序需要能够轻松地检索值,最重要的是必须能够处理这些字段的全面搜索功能.

我考虑的一个选择是使用属性列表安排,其中数据库表只包含每个媒体文件的每个元数据字段的属性名称和值.然而,当对该解决方案进行原型制作时,很快就变得显而易见的是,对于特别是当数据库可以合理地大的时候,记录的搜索和检索并不足够.最近部署了3000个媒体文件,有超过20个元数据字段.此外,进行搜索和检索相关记录的查询变得非常复杂.

系统当前正在使用的另一个选项是元数据配置是先前定义的,并且在部署期间运行迁移以创建具有标准名称的表和模型,以便媒体模型可以与系统然后使用的模型相关联.这通常工作很好,但它确实导致一些重要的部署和测试问题.

例如,当您在部署之前不知道配置时,编写单元测试变得更具挑战性.虽然我可以编写一个示例配置并以这种方式测试代码,但是不允许我测试特定部署的具体要求.

同样的,在开发中,它目前要求我将一个迁移从配置文件复制到主文件夹中,运行它,执行所有的测试和开发,然后我必须记住从主文件夹中回滚并删除该迁移,以便应用程序处于标准状态.当我修复bug时,我需要将应用程序放在特定的配置中进行测试和调试.尝试在各种配置之间切换成为一个真正的噩梦.

理想情况下,当服务器启动时,我想要的是能够从配置文件动态创建表和模型,包括验证等.更好的是,如果我可以在一个数据库中维护多个元数据设置,每个数据库都有自己的表,所以我需要做的是在它们之间切换,这是更改应用程序当前正在使用的配置文件.

我确信这可以用Rails完成,但是我能够找到的信息很少,可以指出我在过去几天的研究过程中如何构建它的正确方向,所以任何帮助或建议会非常感激!

解决方法

如果我正确理解你,Rails有一些很好的技巧来帮助你解决这些问题.

在ActiveRecord ORM中,可以使用单表继承模式或使用polymorphic associations(…更复杂但更灵活)来建模您在关系数据库中尝试做什么.多态关联允许模型属于不同类型的其他模型.最近有一个关于这个话题的轨道,但是我不会链接到它,因为它需要付费订阅.

在部署方面,听起来你手动做了很多事情,这是在模式出现之前开始的正确方法.一旦您开始看到该模式,就可以使用很好的程序来配置,构建和部署自动化,如Capistrano,OpsCode ChefPuppet等等.您还可以将配置和部署与源代码存储库集成,从而实现更好的工作流程.例如,使用Git,您可以为各种媒体文件类型定义topic branches,并在与主题分支匹配的每个分支中具有不同的配置.

您可能想查看Martin Fowler的优秀书“PoEAA”以及他website上的一些主题.希望这个答案有助于即使答案很通用.你的问题很广泛,没有一个简单的答案.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...