【问题标题】:Multiple users with single database Ruby on Rails 4多个用户使用单个数据库 Ruby on Rails 4
【发布时间】:2015-02-02 11:33:57
【问题描述】:

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

  1. 应用应该使用一个数据库
  2. 每个商业客户都有多个用户。
  3. 当任何商业客户的用户创建/读取数据时,他们应该在商业客户的命名空间下进行......因此他们应该无法看到其他客户的数据,也不应该被允许创建数据等. 为其他客户。

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

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

**PS。所有商业客户都将拥有唯一的 URL 前。 customer1.myapp.com

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 您建议使用模型关联方法还是使用像 Apartment 这样的 GEM?
    • 公寓听起来是您想做的事情的好宝石。它甚至可以像您想要的那样遍历中间件和子域。但最终,它不像model association approach vs Apartment 那样黑白分明。 Apartment 使用关联,您可能也会在开发产品时使用关联。开箱即用,Rails 以处理关系数据库而闻名,因此可以预期关联,因为通常情况下,您的不同数据库表之间存在关系。
    【解决方案2】:

    您正在寻找的是Multitenancy

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多