2

我正在开发一个 Rails 应用程序作为更大解决方案的一部分。该解决方案的核心将是一个 mySQL 数据库,将来还会有其他 Web 服务和连接器。

我们计划首先根据 Rails 约定对数据、列名、关系进行建模。但我希望我将使用“建立连接”来将表映射到实际数据库,然后不在 rails 本身使用任何迁移。

所以我的问题是,将 Rails 应用程序附加到外部数据源以对数据模型进行持续更改的最佳实践是什么。

我是否应该简单地使用新字段和手动关系更新 model.rb 文件,然后允许 rails 通过建立连接到每个表?

是否有任何工具可以同步已更改的字段和/或数据模型中可能已更改的关系?其他开发人员之一熟悉 Symfony,并表示他们使用过类似的东西。我为数据库进行逆向工程而找到的 gem 要么已经过时,要么似乎只是删除了 .rb 文件,而没有考虑到字段或关系。

谢谢!

4

1 回答 1

3

是否有任何工具可以同步已更改的字段和/或数据模型中可能已更改的关系?

按照设计,Ruby on Rail 的迁移旨在在对 RoR 模型进行更改时增量更新数据库。

如果我理解正确,您有兴趣记录相反方向的变化;如果您愿意,可以进行反迁移;)。如果是这样,那么迁移不是一个很好的匹配。

根据您的数据库更改的记录方式(您提到此 web 应用程序是大型机器中的一个齿轮),我建议您一起放弃迁移,因为这些迁移旨在对数据库进行更改。话虽如此,我强烈建议使用迁移来记录您的数据库更改。

回到你的问题。rake db:migrate通过简单地运行(没有任何迁移)简单地更新db\schema.rb文件,我可能会在这个问题上出错。schema.rb将始终反映调用时的最新数据库结构。不幸的是,这就是魔法停止的地方。如果影响模型的属性名称,Rails webapp 将需要更新以反映任何 DB 元数据更改。

我是否应该简单地使用新字段和手动关系更新 model.rb 文件,然后允许 rails 通过建立连接到每个表?

是的,恕我直言:)

HTH,祝你好运。

于 2013-01-29T15:03:47.677 回答