Другим вариантом может быть использование камня cancan
.https://github.com/ryanb/cancan
Это действительно просто, и вы также можете решить свою бонусную проблему.
Например:
can :manage, Blog, :user_id=>user.id
can :manage, Section, :blog=>{:user_id=>user.id}
can :manage, Image, :section=>{:blog=>{:user_id=>user.id}}
Эта настройка хороша, если у вас есть
Blog belongs_to User
Section belongs_to Blog
Image belongs_to Section
О том, как настроить остальные, смотрите Wiki .
О, и я забыл, что есть также скринкаст о cancan