邀请和从项目中删除协作者 - Rails

时间:2016-09-15 09:15:24

标签: ruby-on-rails devise multi-tenant invitation

我正在构建一个rails应用程序,其中包含可以邀请用户(由Devise处理)作为协作者(非常类似于GitHub存储库和协作者)的项目。我正在努力让邀请运行(专门删除协作者)。我一直关注this tutorial来创建邀请,但教程不包括撤消邀请(删除协作者)。

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

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

有谁知道我应该走哪条路? 如果有更多信息有用,请告诉我。

由于

2 个答案:

答案 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