7

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

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

我的问题是:分解我们的模型以使这两个应用程序都不必复制模型代码的最佳方法是什么?

我们关心以下问题:

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

谢谢。

4

1 回答 1

1

我不知道这是否是这种方法,并且希望看到其他想法,但是我们在与此模型匹配的产品中所做的事情:

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

我们将所有迁移都保存在管理系统下。你不需要它们存在两次,所以它们就在那里。

如果每个单独的应用程序都希望在共享模型之上添加其他模型怎么办?这些移民住在哪里?

我们共享所有模型。它目前可能只与一个应用程序相关,比如说 - 一个favourited_items概念可能只对最终用户重要。但在以后,管理员可能想知道哪些项目最常被收藏。

其次,如果你想通过控制台调查任何东西,如果你不需要访问单独的应用程序,这真的很有帮助,因为它们都没有每个表的模型。

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

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

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

于 2016-03-24T15:19:41.057 回答