我正在构建一个rails应用程序,其中包含可以邀请用户(由Devise处理)作为协作者(非常类似于GitHub存储库和协作者)的项目。我正在努力让邀请运行(专门删除协作者)。我一直关注this tutorial来创建邀请,但教程不包括撤消邀请(删除协作者)。
我有一个projects_controller.rb
文件和一个invites_controller.rb
文件。邀请控制器处理新邀请的创建,这是正常工作(即:如果用户已经存在,它们会立即添加到项目中,如果用户不存在,则会向输入的电子邮件地址发送邀请)。
我应该如何添加删除协作者的功能?对我来说,使用invites#destroy
(在该控制器中创建邀请)是合乎逻辑的,但是,简单地删除邀请将不会撤消用户对项目的权限。那么最初创建项目的用户呢,他们根本就没有邀请..
有谁知道我应该走哪条路? 如果有更多信息有用,请告诉我。
由于
答案 0 :(得分:1)
假设您处理具有has_many关联的项目的协作者:
class Project < ApplicationRecord
has_many :users
end
然后您可以实施invites#destroy
从协作者列表中删除用户:
class InvitesController < ApplicationController
def destroy
@project = Project.find params[:project_id]
@user = User.find params[:user_to_remove]
@project.users.delete(@user)
# Add whatever renders or redirects you need to here
end
end
您的视图可以使用此按钮删除协作者:
# Make sure @project (the project to remove from) and @user (the user to remove) are defined and non-nil
<%= link_to "Remove Collaborator", url_for(:controller => :invites, :action => :destroy, :project_id => @project.id, :user_to_remove => @user.id), :method => :delete %>
答案 1 :(得分:0)
使用gem 'devise_invitable'
处理邀请。
https://github.com/scambra/devise_invitable