Я обычно использую CanCan , чтобы сделать это. Вы можете добавить проверки, если связанный пользователь является текущим пользователем.
Пример конфигурации CanCan для rails admin (Способность
class Ability
include CanCan::Ability
def initialize(user)
if user
can :access, :rails_admin
if user.role? :employee
can :read, [Model1, Model2, Model3]
can :update, User, :id => user.id #employee can update own user details
elsif user.role? :admin
can :manage, :all
end
end
end
end
И чтобы проверить роль ваших пользователей, добавьте / измените следующее в вашей модели пользователя
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :role
def role_enum
%w[admin employee]
end
def role?(role)
self.role == role.to_s
end