在数据库架构发生变化时处理旧版移动应用的正确方法

时间:2017-06-14 17:31:51

标签: ruby-on-rails api mobile-application api-management api-versioning

我有一个离子android移动应用程序,它连接到rails api服务器上的ruby 这个应用程序使用postgresql作为数据库服务器。

每当我创建新功能时,我都会将api和新应用程序部署到应用程序商店并碰撞各自版本的api和应用程序,这些版本具有自己的版本编号顺序。
api已部署到服务器,但用户设备上的应用程序不经常更新,所以下面有两种情况出现

案例1:新增栏目
例如,我发布了一个版本,例如我在db中的某些表中添加了很少的新列,以捕获其他相应文本字段也已添加到应用程序UI中的其他信息。
在这里,较新版本的应用程序的用户将按预期工作(将这2个信息发送到列)但旧版本将不会发送这2个字段值

案例2:删除了列
例如,我正在以一种主要的方式重新构建应用程序,并且必须对数据库进行规范化,因为它之前效率低下甚至会导致表格中断或删除几列。 在这里,旧版本的应用程序只会崩溃或无法正常工作。

我觉得我构建的每个商业应用都会有相同的方案来管理,这应该是所有

的常见问题

我正在编写一些自定义逻辑,应用程序会在连接到api服务器时检查" 更新标记"如果应用程序的版本设置为 强制更新以使其与api版本一起使用,然后应用程序将被重定向到播放/应用程序商店。

我想知道大家是如何处理这个问题的,我正在以正确的方式行事。

是否有任何rails插件或库已经解决了这个特殊问题 或者帮助这样做。 我知道有很多版本宝石可用,但他们没有处理这个问题[强制更新应用程序]

请指导

1 个答案:

答案 0 :(得分:0)

我参与了一个项目,在该项目中,Android App Startup上调用了配置API。此API将提供2个字段:major_versionminor_version。如果配置API中的major_version与应用程序中的minor_version不匹配,则会出现一个弹出窗口,要求您强制更新应用程序。这将在启动屏幕上,因此除非您强制更新您的应用,否则您将无法访问应用的实际内容。如果您不希望在2个应用版本或2个API版本之间进行强制更新,则可以选择调整{{1}}。