ruby-on-rails - Multi-Tenancy 应用程序的授权 gem?

标签 ruby-on-rails ruby ruby-on-rails-3 authorization

是否有任何 Multi-Tenancy 应用程序的授权 gem/示例?

我查看了 CanCan 和 CanTango,但找不到我要找的东西。

我的应用有账户、用户、关系模型。关系模型有一个确定授权级别的 relationship_type 列。它的值可以是ownermoderatoreditor,将来可能更多。用户可以拥有/管理多个帐户,一个帐户可以有多个所有者/管理员。

我找到的所有示例都描述了单个租户应用程序,而我的应用程序的授权必须限定在正在查看的当前帐户范围内。例如,用户可以是一个帐户的访客,也可以是另一个帐户的所有者。

我开始认为我的关系模型设计不佳并且可能有缺点,但我不确定什么是更好的选择。

最佳答案

CanCan 确实可以处理这个问题,因为它允许您定义任意规则。您的能力文件可能如下所示:

def initialize(user)

  can :read, BlogPost do |blog_post|
    blog_post.account == user.account and user.relationship.in?([:owner, :moderator])
  end

end

关于ruby-on-rails - Multi-Tenancy 应用程序的授权 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570671/

相关文章:

.net - Ruby 中的代码优先等价物

使用 gsub 的 Ruby 正则表达式

ruby - ruby 如何处理零除法?

ruby-on-rails-3 - 从临时服务器连接到 GitoLite 时出错 - ECONNREFUSED 部署错误

ruby - 如何联合两个不同的 Mongoid Criteria

ruby-on-rails - 如何正确诊断 500 错误(Rails、Passenger、Nginx、Postgres)

ruby-on-rails - Rails 表单中的多个对象

ruby-on-rails - Rails 中先模型还是先迁移?

ruby-on-rails - 如何测试类主体方法调用?

ruby-on-rails - 索引无事件记录的Elasticsearch