我正在开发一个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
如何将此限制为未登录的访客可以查看开发人员/组织/应用程序配置文件的某些方面,创建者可以完全访问组织,应用程序的所有者具有完全访问权限,协作者可以访问。这有意义吗?
答案 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