在 Rails 4 上具有单个数据库 Ruby 的多个用户

Multiple users with single database Ruby on Rails 4

我正在构建一个系统(完成后)将为多个商业客户提供服务。我需要完成以下任务:

  1. 应用程序应该使用一个数据库
  2. 每个商业客户将有多个用户。
  3. 当任何商业客户的用户 create/read 数据时,他们应该在商业客户的命名空间下这样做....因此他们不应该能够看到其他客户的数据,也不应该被允许为其他客户创建数据等。

最初我认为最好的方法是通过关联将所有用户分配给商业客户。由于担心查询数据库太多,我做了一些研究并找到了一些关于机架和中间件的信息。这似乎是实现我想要的另一种选择,但它让我有点困惑。

在我的应用中实现此类功能的最佳选择是什么?

**PS。所有商业客户都将拥有独特的 URL 的前任。 customer1.myapp.com

谢谢

机架和中间件是请求在到达您在控制器和模型中编写的代码之前经过的层。简而言之,如果您需要一些预处理或任何类似的事情,那么您不应该乱用中间件。对于这种特殊情况,您不需要处理中间件。

您正在构建一个标准 Rails 应用程序来服务不同的客户端(用户,如果您愿意的话)。可以对数据库进行多次查询。重要的是要确保您的查询是高效的,并且您正在正确使用 ActiveRecord 系统,这对提高效率有很大帮助。您可以使用 Model#includesModel#eager_load 等方法。

至于 customer1.myapp.com,Rails 指南中有很多关于设置这些东西并与之交互的信息。

您要找的是Multitenancy

有几种实现方法。其中一种选择是使用 PostgreSQL 的模式。

你可以在gemApartment上看看。也许你可以从中得到一些想法。