在 Rails 3 中处理多租户的最佳方式

发布于 2024-09-24 18:13:39 字数 383 浏览 4 评论 0原文

我正在构建多租户应用程序。

所有数据隔离均由每个表中的 TenantID 列完成。

自动处理所有租户模型的多租户的最佳方法是什么?

示例:

Contacts.new({.....}) should automatically add :tenant => curret_user.tenant
Contacts.where({....}) should also add :tenant => curret_user.tenant

目前我在 CanCan gem 中看到类似的内容,它可以获取特定用户参数的记录。但它没有为插入和更新操作提供任何内容。或者可能是我不明白该怎么做。

问候, 阿列克谢·扎哈罗夫。

I'm building multi-tenant application.

All data isolation is done by TenantID column in each table.

What is the best way to automatically handle multi-tenancy for all tenant models.

Example:

Contacts.new({.....}) should automatically add :tenant => curret_user.tenant
Contacts.where({....}) should also add :tenant => curret_user.tenant

Currently I see something like this in CanCan gem which that can fetch records for specific user parameters. But it is not providing anything for insert and update operation. Or may be I doesn't understand how to do it.

Regards,
Alexey Zakharov.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萌辣 2024-10-01 18:13:39

如果您将通过租户对象处理所有集合,则这是可能的。

这是使用 Mongoid 的示例:

#Find all products with price > 500 in current tenant scope

current_tenant.products.where(:price.gt => 500) 

#It also work for create and save operations

current_tenant.products.create :name => "apple", :price => 200

It is possible if you will work with all collections through tenant object.

Here is sample using Mongoid:

#Find all products with price > 500 in current tenant scope

current_tenant.products.where(:price.gt => 500) 

#It also work for create and save operations

current_tenant.products.create :name => "apple", :price => 200
執念 2024-10-01 18:13:39

我建议您查看多租户红宝石宝石。确保执行的所有查询都尊重当前租户变得很简单。
http://blog.codecrate.com/2011 /03/multitenant-locking-down-your-app-and.html

例如:

Multitenant.with_tenant current_tenant do
  # queries within this block are automatically
  # scoped to the current tenant
  User.all

  # records created within this block are
  # automatically assigned to the current tenant
  User.create :name => 'Bob'
end

I'd recommend checking out the multitenant ruby gem. It makes it trivial to ensure that all queries performed respect the current tenant.
http://blog.codecrate.com/2011/03/multitenant-locking-down-your-app-and.html

ex:

Multitenant.with_tenant current_tenant do
  # queries within this block are automatically
  # scoped to the current tenant
  User.all

  # records created within this block are
  # automatically assigned to the current tenant
  User.create :name => 'Bob'
end
单调的奢华 2024-10-01 18:13:39

我使用充当租户 gem 进行多租户。这是非常好的宝石并且非常容易使用。这是这个 gem 的文档 充当租户

I Used Act As Tenant gem for multitenancy . It's pretty good gem and very easy to use. Here is a documentation of this gem Act As Tenant

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文