
activerecord-multi-tenant API 参考手册完整方法文档与使用示例【免费下载链接】activerecord-multi-tenantRails/ActiveRecord support for distributed multi-tenant databases like PostgresCitus项目地址: https://gitcode.com/gh_mirrors/ac/activerecord-multi-tenantactiverecord-multi-tenant 是一款为 Rails/ActiveRecord 提供分布式多租户数据库支持的 gem特别适用于 PostgresCitus 等环境。本手册将详细介绍其核心 API 方法、使用场景及最佳实践帮助开发者快速掌握多租户数据隔离的实现方式。核心模块概览MultiTenant 模块该模块是 gem 的核心提供了租户管理的基础功能。主要定义在 lib/activerecord-multi-tenant/multi_tenant.rb 文件中。ControllerExtensions 模块提供控制器层面的租户切换功能方便在请求处理过程中动态设置当前租户。定义于 lib/activerecord-multi-tenant/controller_extensions.rb。QueryRewriter 模块负责重写 SQL 查询以实现租户数据隔离确保查询仅返回当前租户的数据。源码位于 lib/activerecord-multi-tenant/query_rewriter.rb。常用 API 方法详解租户管理方法MultiTenant.current_tenant功能设置当前租户示例MultiTenant.current_tenant current_user.tenantMultiTenant.current_tenant功能获取当前租户返回值当前租户对象或nilMultiTenant.with(tenant, block)功能在块内临时设置租户示例MultiTenant.with(tenant) do # 在此块内执行的数据库操作都将使用指定的租户 records Product.all endMultiTenant.without(block)功能在块内禁用租户隔离注意仅在必要时使用可能导致数据安全问题控制器辅助方法set_current_tenant_through_filter功能在控制器中启用租户过滤使用在控制器类中调用通常与before_action配合set_current_tenant(current_tenant_object)功能设置当前请求的租户示例class ApplicationController ActionController::Base set_current_tenant_through_filter before_action :set_tenant private def set_tenant set_current_tenant(Tenant.find_by(subdomain: request.subdomain)) end end模型扩展方法模型扩展相关方法定义在 lib/activerecord-multi-tenant/model_extensions.rb主要用于将模型与租户关联。acts_as_tenant功能将模型标记为租户隔离模型示例class Product ApplicationRecord acts_as_tenant :tenant end高级功能多租户查询重写QueryRewriter 模块会自动重写查询确保只返回当前租户的数据。例如执行Product.all时实际查询会自动添加租户条件。租户连接处理通过 lib/activerecord-multi-tenant/query_rewriter.rb 中的visit_Arel_Nodes_OuterJoin等方法处理关联查询确保关联表也应用租户过滤。完整 API 文档完整的 API 文档可通过项目中的 HTML 文档查看docs/source/_static/api-reference/index.html该文档包含所有类、模块和方法的详细说明包括参数、返回值和示例代码是开发过程中的重要参考资料。使用注意事项租户切换使用MultiTenant.with而非直接修改current_tenant以确保线程安全性能考量租户过滤会增加查询开销建议为租户字段建立索引测试策略在 spec/activerecord-multi-tenant/ 目录下提供了完整的测试用例可参考测试方法通过合理使用 activerecord-multi-tenant 提供的 API开发者可以轻松实现多租户应用的数据隔离为构建分布式 SaaS 应用提供有力支持。【免费下载链接】activerecord-multi-tenantRails/ActiveRecord support for distributed multi-tenant databases like PostgresCitus项目地址: https://gitcode.com/gh_mirrors/ac/activerecord-multi-tenant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考