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

时间:2015-02-02 11:33:58

标签: ruby-on-rails ruby ruby-on-rails-4 saas

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

  1. 应用程序应使用一个数据库
  2. 每个商业客户都有多个用户。
  3. 当任何商业客户的用户创建/读取数据时,他们应该在商业客户的名称空间下这样做....因此他们不应该看到其他客户'数据也不应该被允许为其他客户创建数据等。
  4. 最初我认为最好的方法是通过关联将所有用户分配给商业客户。由于我担心过多地查询数据库,我做了一些研究,发现了一些关于Rack和中间件的信息。这似乎是实现我想要的另一种选择,但它让我感到困惑。

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

    ** PS。所有商业客户都将拥有独特的网址。 customer1.myapp.com

    由于

2 个答案:

答案 0 :(得分:1)

机架和中间件是在您访问您在控制器和模型中编写的代码之前请求通过的层。简而言之,如果你需要一些预处理,或者任何这种性质的事情,那么你就不应该混淆中间件。对于这种特殊情况,您不需要处理中间件。

您正在构建一个标准的Rails应用程序,为不同的客户端(用户,如果您愿意)提供服务。可以对DB进行许多查询。重要的是确保您的查询有效并且您正确使用ActiveRecord系统,这有助于提高效率。您可以使用Model#includesModel#eager_load以及其他方法。

至于customer1.myapp.com,Rails指南中有很多关于设置这些内容并与之接口的信息。

答案 1 :(得分:1)

您正在寻找的是Multitenancy

有几种方法可以实现它。其中一个选项是使用PostgreSQL的模式。

您可以查看gem Apartment。也许你可以从中得到一些想法。