Настройка Devise, чтобы разрешить редактирование только собственных записей? - PullRequest
1 голос
/ 19 октября 2010

Devise работает в моем приложении на Rails, но я не могу понять, как теперь заблокировать его, чтобы пользователь мог редактировать только свою собственную запись в таблице пользователей И в таблицах, принадлежащих пользователю.

Что мне здесь не хватает? Это сделано в контроллере или модели?

Ответы [ 2 ]

3 голосов
/ 19 октября 2010

Я бы создал помощника в application_controller для current_user и исключил бы использование User.find

Самый простой способ создания авторизации - с логическим флагом (admin true /ложный).Другими простыми решениями являются канканы, о которых упоминает Яннис, или easy_roles KISS рекомендуется начинать с.Вы можете реализовать действие редактирования следующим образом:

def edit
 if current_user.is_admin?
   User.find(params[:id])
 else
    current_user
 end
end

application_controller.rb

def current_user
  UserSession.find
end

Чтобы ограничить доступ для пользователя, например, для пользователя, имеющего собственные задачи, сделайте это.

def index
  @tasks = current_user.tasks
end
2 голосов
/ 19 октября 2010

Devise - это решение для аутентификации. Теперь вам нужна система авторизации. Посмотрите на Ryan Bates CanCan ( github , railscasts ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...