 <p>First of all, for capabilities, if it's a fixed list of capabilities you're working with, you're probably better off with having a number of booleans on the roles table, e.g. <code>can_create_projects</code>, <code>can_create_users</code>, etc., which encode the abilities of each role.</p> <p>Then your CanCan Ability class might have something like the following,</p> <pre><code>class Ability include CanCan::Ability def initialize(user) can(:create, Project) do |project| user.roles.any?(&amp;:can_create_projects) end end end </code></pre>