Как уже упоминалось, Cancan определенно пригодится для такого рода вещей. В частности, стоит обратить внимание на 'load_and_authorize_resource' в ваших контроллерах, которые вы хотите защитить.
Кроме того, существует множество способов настройки администраторов и ролей, я лично обрабатываю их в файле моделиility.rb следующим образом ...
def initialize (пользователь)
user ||= User.new # guest user (not logged in)
if user.roles.include? Role.find_by_name('Administrator')
can :manage, :all
elsif user.roles.include? Role.find_by_name('Editor')
can :index, Admin
can :manage, Article
(etc)