我正在开发一个有两个不同Rails应用的项目。一个是Web应用程序,另一个是API应用程序。它们都使用相同的数据库。他们使用相同模型和模式的正确方法是什么,或者是什么?目前,似乎模型文件从一个应用程序复制到另一个应用程序,并且在检查差异时它们似乎非常不同步。
答案 0 :(得分:3)
我想到了一些选择:
Git子模块。将模型存储在单独的仓库(或仓库)中,然后将其作为Git submodule包含在每个应用中。这允许您在没有冗余的情况下重复使用它们,但您可能必须确保每个应用程序保持同步使用哪个版本。
制作一个应用程序,有两个不同的部分。也许您的API可能是一个简单的Sinatra(或其他微框架)应用程序,并驻留在Rails应用程序中,然后安装到路径/子域。这可能是工作量最少而且最简单的,但它也可能是最混乱的。
使用您自己的API。您已经拥有API,为什么不使用它?您的前端应用程序可以与之交谈,并且不必在其中包含任何模型逻辑。这也有确保您的API工作且功能齐全的良好副作用,因为您现在是它的消费者,而不仅仅是第三方。
你选择哪一个取决于你,虽然我碰巧更喜欢最后一个。虽然它可能更多的工作,但你可能会通过使你的业务逻辑外部(并使MVC违规变得更难,甚至不可能)来最终获得整体更好的设计。