我的目标是为每个子域拥有单独的用户帐户。在任何情况下,我都不想在子域之间进行异花授粉。
我看过Robby Russle ,和 DHH's想法(虽然都是 Rails3 之前的版本)。
Controller 处理非常简单,我的问题是如何保持模型的数据分离。阻止 user1 查看 user2 数据的最佳方法是什么?
一些想法可能包括:
为每个模型添加一个
subdomain_id
外键 - 优点,简单的一对多关系可用于将每个模型的范围限定为子域。 - 缺点,数据和更大的应用程序逻辑之间的耦合非常紧密,这似乎不合适。一对多 :through
对于将其与子域关联的每个模型 - 优点,无需添加subdomain_id
> 现有表的外键列将它们与其子域相关联。 - 缺点,我的直觉是这太过分了。多个联接查询可能会变得复杂,并且可能会出现异花授粉错误。每个子域都有独立的应用程序或数据库 - 优点,数据完全隔离。 - 缺点,需要管理/更新/保护/托管/等大量单独的应用程序/数据库。
你的想法?
最佳答案
选项 5。Guy Naor's Schema solution - 优势,这让我大吃一惊。大多数情况下对 Rails 是透明的,完全的数据分离,只有一个数据库,非常适合最初不是设计为 Multi-Tenancy 的应用程序。惊人的。 - 缺点,需要使用 Postgres 或其他支持架构的数据库(无论如何我已经在使用 PG),迁移时需要迭代现有架构。
现在这似乎是最好的方法。有什么主要缺点吗?
关于ruby-on-rails - Rails Basecamp 风格子域最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024785/