XaoGao / Todoser

Clone trello
3 stars 11 forks source link

Создать контроллер ProjectMemebrs #184

Closed XaoGao closed 2 years ago

XaoGao commented 2 years ago

Нужно создать функционал по удалению пользователя из проекта, удалиться из проекта может пользователь сам себя и автор проекта может удалить любого пользователя по email, для этого: 1) Создать контроллер ProjectMembersController 2) Добавить в контроллер

before_action :authenticate_user!

2) Добавить в routes

resources :projects do
  resources :project_members, only: [destroy]
end

3) Создать в контроллере метод destroy 4) В params метода должен быть email пользователя которого будут удалять 5) Найти по id проект 6) Добавить action_policy для проекта метод destroy. В файле app/polices/project_policy должен быть метод

def destroy?
  record.members.include?(user) || record.author == user
end

А в методе project_members_controller#destroy после нахождени @project вызвать проверку

authorize! @project

7) Найти пользователя по email

user = User.find_by(email: params[:email])

8) Сделать проверку что пользователь найден иначе сделать редирект на request.referer с сообщением 9) Удалить запись ProjectMember(user:user, project: @project) 10) Сделать редирект на project_path(@project) и вывести сообщение через flash что прошло успешно 11) Написать тесты