1

我正在构建一个 Rails 应用程序,其中包含可以邀请用户(由 Devise 处理)作为协作者的项目(很像 GitHub 存储库和协作者)。我正在努力让邀请运行(特别是删除合作者)。我一直在关注本教程以运行邀请的创建,但本教程不包括撤销邀请(删除协作者)。

我有一个projects_controller.rb文件和一个invites_controller.rb文件。邀请控制器处理新邀请的创建,它工作正常(即:如果用户已经存在,则立即将其添加到项目中,如果用户不存在,则将邀请发送到输入的电子邮件地址)。

我应该如何添加删除协作者的功能?对我来说,使用一个(因为邀请是在该控制器中创建的)是合乎逻辑的,invites#destroy但是,简单地删除一个邀请不会撤销用户对项目的权限。而最初创建项目的用户呢,他们根本不会收到邀请......

有谁知道我应该在这里走哪条路?让我知道是否有更多信息会有所帮助。

谢谢

4

2 回答 2

2

假设您处理具有 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 %>
于 2016-09-15T11:01:20.320 回答
0

用于gem 'devise_invitable'处理邀请。 https://github.com/scambra/devise_invitable

于 2016-09-15T09:26:47.657 回答