Ваш стол кажется разумным способом реализовать очень сложную схему авторизации, которая, похоже, является тем, что вам нужно.
Что касается CanCan, то да, он отлично с этим справится.Все, что делает CanCan, - это дает вам возможность определять авторизацию действий, моделей и т. Д. В соответствии с определенными критериями.Этими критериями могут быть что угодно (например, день месяца и т. Д.), Но они обычно привязаны к ролям.Поэтому все, что вам нужно сделать, это указать права авторизации в соответствии с информацией в вашей таблице ролей и конкретным экземпляром модели, который будет оцениваться.