You can use a model with a field like can_manage_projects
class User < ActiveRecord::Base
has_many :roles
field :can_manage_projects, type: boolean
end
And on your ability, you set a permission correspondent...
class Ability
def initialize(user)
can :manage Project if user.can_manage_project?
end
end
And so, you can use that permission whenever you want, doing things like:
class ProjectController
def assign_user(project, user)
project.users << user if can? :manage, Project
end
end
or
<body>
<% if can? :manage, Project %>
<%= link_to 'Assign selected user to Project', assign_user_project_path(project, user) %>
<% end %>
</body>