似乎我发现的大多数关于多租户应用程序的文档/教程似乎更喜欢通过子域进行作用域划分。旧的经典风格的basecamp可能为此设置了presendent,其中每个用户/公司都有一个http://mycompany.app.com地址。例如,像嘉实这样的应用程序也可以做到这一点。
我最近注意到新的basecamp不再有公司子域...
只是想知道通过子域作用域与通过诸如Pundit或CanCan这样的gem来作用域用户数据的优点是什么?
发布于 2014-11-20 11:24:43
对于用户(非管理员)可以在应用程序中执行的角色/授权,更多的是使用Pundit或CanCan (CanCanCan)。
Mutlitenancy使用没有单独模式的子域只是在您的表中提供了一个唯一的account_id,就像您使用postgres模式一样,它为每个子域(帐户)创建了一个单独的模式;因此每个子域/帐户都有自己的表副本。
您还可以通过使用gem (如https://github.com/dsaronin/milia )来实现不使用子域的多租户
每种方法都有其优点和缺点。也可以看看这个视频:http://confreaks.com/videos/111-aac2009-writing-multi-tenant-applications-in-rails
https://stackoverflow.com/questions/26961991
复制相似问题