我的目标是为每个子域拥有单独的用户帐户。在任何情况下,我都不想在子域之间进行异花授粉。
我看过了罗比·拉塞尔 http://www.robbyonrails.com/articles/2009/01/11/subdomain-accounts-with-ruby-on-rails-explained, and DHH's http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails想法(虽然都是 Rails3 之前的版本)。
控制器处理非常简单,我的问题是如何保持模型的数据分离。阻止 user1 查看 user2 数据的最佳方法是什么?
一些想法可能包括:
Add a subdomain_id
每个模型的外键 -优势,简单的一对多关系可用于将每个模型的范围限定到子域。 -坏处,这是数据和更大的应用程序逻辑之间非常紧密的耦合,这似乎不合适。
One-to-many :through
对于将其与子域关联的每个模型 -优势,无需添加subdomain_id
现有表的外键列将它们与其子域相关联。 -坏处,我的直觉是,这太过分了。多个连接查询可能会变得复杂,并且可能会出现异花授粉错误。
每个子域单独的应用程序或数据库 -优势,数据是完全隔离的。 -坏处,需要管理/更新/保护/托管/等大量单独的应用程序/数据库。
你的想法?
选项 5。Guy Naor 的架构解决方案 http://aac2009.confreaks.com/videos/111-aac2009-writing-multi-tenant-applications-in-rails - 优势,这简直让我大吃一惊。大多数情况下对 Rails 是透明的,完全的数据分离,只有一个数据库,非常适合最初不是设计为多租户的应用程序。惊人的。 -坏处,需要使用 Postgres 或其他支持架构的数据库(无论如何我已经在使用 PG),迁移时需要迭代现有架构。
目前看来,这无疑是最好的方法。有什么重大缺点吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)