ruby-on-rails - Rails 6 用于“沙盒”模式的多个数据库
问题描述
我们正在开发一个 Rails 应用程序,它将为我们的客户提供一个 API。假设使用此 API,他们可以创建Puppies
. 许多提供 API 的服务都包含“沙盒”模式,例如,它们可以在其中创建虚假资源以确保它们的集成是正确的。我们想在我们的 API 中包含一个“沙盒”模式。
我知道向 API 添加沙盒模式的一个简单解决方案是创建一个“沙盒”环境(类似于生产,但没有一些仅应在实际生产事务中发生的业务逻辑)并要求我们的客户调用沙盒进行沙盒 API 调用时的环境。然而,由于 Rails 6 现在包括对多个数据库的支持,我们也在考虑向模型添加一个辅助数据库来Puppy
处理沙盒调用(即在“沙盒”模式下写入和读取记录)。我们认为,理论上我们可以通过创建一个自定义DatabaseSelector::Resolver
来检查会话并决定它是使用“沙盒”数据库还是主数据库,例如传递给 API 调用的凭据是“沙盒”还是“沙盒”。
您认为这种方法可行吗?与其他方法相比,这种方法的优缺点是什么?(例如沙箱环境,添加Puppy#is_sandbox
列和范围记录等)