2014-01-15 3 views
0

Я понимаю довольно простые работы CanCan и пытаюсь следовать некоторым учебникам, но ни один из них не обсуждает, как назначить роли пользователя в моем приложении.Роли разработчика и CanCan, установленные другими пользователями? (Rails 4.0)

Кроме того, я хочу, чтобы мое приложение разрешало пользователям назначать роли другим пользователям. Например, мои пользователи могут создавать проекты и назначать других пользователей команде проекта. В настоящее время я использую модель ролей для хранения моих пользовательских ролей.

Как я могу разрешить пользователям специально устанавливать другого пользователя в эту роль команды проекта, где они могут управлять проектом?

+0

Взгляните на http://stackoverflow.com/questions/21071693/how-to-get-devise-to-work-with-multiple-models-or-roles-preferably-with-cancan/21072344 # 21072344, который должен ответить на большинство ваших вопросов – Danny

ответ

2

Вы можете использовать модель с полем, как can_manage_projects

class User < ActiveRecord::Base 

    has_many :roles 

    field :can_manage_projects, type: boolean 
end 

И на вашей способности, вы установили корреспондент разрешения ...

class Ability 
    def initialize(user) 
    can :manage Project if user.can_manage_project? 
    end 
end 

И так, вы можете использовать это разрешение всякий раз, вы хотите, делать такие вещи, как:

class ProjectController 

    def assign_user(project, user) 
    project.users << user if can? :manage, Project 
    end 
end 

или

<body> 
    <% if can? :manage, Project %> 
    <%= link_to 'Assign selected user to Project', assign_user_project_path(project, user) %> 
    <% end %> 
</body> 
Смежные вопросы