如何在Rails项目之间共享数据库,迁移和模型?

时间:2016-03-24 14:46:16

标签: ruby-on-rails models project-layout

我知道StackOverflow已经存在一些问题,但它们往往已经过时,并且没有充分解决迁移在以下场景中应该如何工作的问题,这应该是相当常见的:

  • 你有一些应用程序,在Rails中实现。
  • 您的数据有某种管理应用程序,它是在Rails中实现的单独应用程序。
  • 两个应用程序都在相同的数据库和模型上运行。

我的问题是:对我们的模型进行分析的最佳方法是什么,这两个应用程序都不必复制模型代码?

我们关注以下内容:

  • 对于共享模型,数据库迁移应该在哪里生效?
  • 如果每个应用程序都希望在共享模型之上添加其他模型,该怎么办?这些迁移在哪里生活?
  • 将现有迁移迁移到建议的共享迁移方案的最佳方法是什么?

感谢。

1 个答案:

答案 0 :(得分:1)

我不知道这是不是这种方法,并且很想看到其他想法,但我们在与我们相匹配的产品中做了什么:

对于共享模型,数据库迁移应该在哪里生效?

我们将所有迁移都保留在管理系统下。你不需要他们存在两次,所以他们去的地方。

如果每个应用程序都希望在共享模型之上添加其他模型,该怎么办?这些迁移在哪里生效?

我们分享所有型号。它可能只与目前的一个应用程序相关,比如说favourited_items概念可能只对最终用户有用。但是稍后管理员可能想知道哪些项目最常受欢迎。

其次,如果您想通过控制台调查任何内容,如果您不需要访问单独的应用程序,那么它非常有用,因为它们不会为每个表都有模型。

每个应用程序不同的共享模型中的功能检测到rails环境变量,我们已将其扩展为包含更多上下文。例如:if Rails.env == 'admin_production'

将现有迁移迁移到建议的共享迁移方案的最佳方法是什么?

同样,迁移应该只存在一次,共享数据库知道哪些已经运行,所以除非您重命名迁移,否则只需选择一个位置并移动文件。