ruby-on-rails - Rails Basecamp 风格子域最佳实践

标签 ruby-on-rails ruby-on-rails-3 multi-tenant

我的目标是为每个子域拥有单独的用户帐户。在任何情况下,我都不想在子域之间进行异花授粉。

我看过Robby Russle ,和 DHH's想法(虽然都是 Rails3 之前的版本)。

Controller 处理非常简单,我的问题是如何保持模型的数据分离。阻止 user1 查看 user2 数据的最佳方法是什么?

一些想法可能包括:

  1. 为每个模型添加一个 subdomain_id 外键 - 优点,简单的一对多关系可用于将每个模型的范围限定为子域。 - 缺点,数据和更大的应用程序逻辑之间的耦合非常紧密,这似乎不合适。

  2. 一对多 :through 对于将其与子域关联的每个模型 - 优点,无需添加 subdomain_id > 现有表的外键列将它们与其子域相关联。 - 缺点,我的直觉是这太过分了。多个联接查询可能会变得复杂,并且可能会出现异花授粉错误。

  3. 每个子域都有独立的应用程序或数据库 - 优点,数据完全隔离。 - 缺点,需要管理/更新/保护/托管/等大量单独的应用程序/数据库。

  4. 你的想法?

最佳答案

选项 5。Guy Naor's Schema solution - 优势,这让我大吃一惊。大多数情况下对 Rails 是透明的,完全的数据分离,只有一个数据库,非常适合最初不是设计为 Multi-Tenancy 的应用程序。惊人的。 - 缺点,需要使用 Postgres 或其他支持架构的数据库(无论如何我已经在使用 PG),迁移时需要迭代现有架构。

现在这似乎是最好的方法。有什么主要缺点吗?

关于ruby-on-rails - Rails Basecamp 风格子域最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024785/

相关文章:

ruby-on-rails - Rails 4 has_many 已弃用的带有 order 的警告

asp.net - 具有高安全要求的 Multi-Tenancy 网站 - 可能的配置?

architecture - Multi-Tenancy 可扩展性模式

ruby-on-rails - 使用 Rails API 和 JSON 创建用户?

ruby-on-rails - 我如何在 Rail 2.3.5 中生成 mongoid.yml 配置?

ruby-on-rails - Rspec 突然停止工作因为 `require' : no such file to load

ruby-on-rails-3 - 在每个页面上从模型加载对象?

ruby-on-rails - Rake 和未初始化常量

ruby-on-rails - 在一个rspec测试上设置时区

java - Grails3 单元测试不适用于 Multi-Tenancy