Rails模型中的动态模式

时间:2016-07-10 20:47:46

标签: ruby-on-rails ruby

在Rails 4.2中,我知道我们可以做到:

self.table_name = 'users'

但是,我有一个应用程序,它在客户端的模式中有一些模型。它并非真正的多租户,因为所有模型都不在模式中;有些是共享的。例如,用户的私人信息就在每个模式中。

我知道我们可以做到:

self.table_name = 'schema_name.users'

然而,如果每个schema_name不同,每个客户会怎么样?我可以成功地将数据插入到一个模式的用户表中,但是,在同一个会话中,如果我尝试将其插入另一个模式,它永远不会保存在那里。我认为table_name是缓存的,因此保持设置...

有什么建议吗?我确信这在Rails中是可行的。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以采用的方法是使用宝石公寓来完成所有这些并处理不同租户之间的共享表格,并在https://github.com/influitive/apartment

上查看

其他方法是在命中数据库之前在控制器中设置模式,如:

User.table_name = 'schema_name.users'