我们正在构建产品支持应用程序。我们的想法是拥有多个子域,每个子域用于支持其他组织产品。我们称之为帐户 - 每个帐户都与一个子域绑定。 用户也有角色 - 但是,用户可以在account1上拥有一个角色,在account2上拥有其他角色。
基本上,有两个问题:
1)许多验证都基于当前用户的角色。由于它依赖于current_account(即会话数据),因此我无法在模型中进行这些验证。这导致我一些丑陋的控制器代码(丑陋,从某种意义上说,它真的感觉不合适)。我想到在模型类变量之后存储current_account,但我读到这不是线程安全的。有什么建议吗?
2)几乎每个数据库记录都是特定于当前帐户的;所以,几乎每个表都应该有一个account_id列,模型应该有一个belongs_to帐户关联。我想避免这种情况。第一个(显而易见的)是为每个帐户建立一个单独的数据库,但是
a)有共享表
b)老板说这个解决方案是不可接受的(会有很多帐户,用户数量相对较少)。还有第三种方式吗?