CanCan基于多个视图的访问

时间:2013-08-26 22:11:44

标签: ruby-on-rails activerecord ruby-on-rails-4 cancan activemodel

我正在开发一个Rails 4应用程序,我试图想出一个解决方案。我想知道如何实现CanCan以允许用户访问某些数据。如客人只能查看内容的某些部分。所有者可以拥有对内容的完全访问权限,协作者可以具有部分访问权限。

我的应用包含

User
 - Developer
 - Organization

Developer
 - Has many apps on its own
 - Has many organizations as founder or collaborator

Organization
 - Has many founders and collaborators
 - Has many apps

如何将此限制为未登录的访客可以查看开发人员/组织/应用程序配置文件的某些方面,创建者可以完全访问组织,应用程序的所有者具有完全访问权限,协作者可以访问。这有意义吗?

1 个答案:

答案 0 :(得分:2)

cancan仅适用于current_user方法。我不知道是否有办法定制这个

下面的代码示例可以指导您仅通过所有者

管理内容
 class Ability
      include CanCan::Ability

      def initialize(user)
        user ||= User.new # guest user (not logged in)
            if user.admin?
               can :manage, :all
            else
              can :read, Content
            end

        if user
          can :create, Content
          can :manage, Content do |content|
            content.try(:user) == user
          end
        end
      end
    end