2016-09-15 31 views
1

我正在构建一个Rails应用程序,该应用程序可以邀请用户(Devise处理)作为协作者(很像GitHub存储库和协作者)的项目。我正在努力获得邀请(专门删除协作者)。我一直在关注this tutorial以获得正在运行的邀请的创建,但本教程不包括撤消邀请(删除协作者)。从项目中邀请和删除协作者 - Rails

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

我应该如何添加删除协作者的功能?对我而言,使用invites#destroy(作为该控制器中创建的邀请)是合理的,但是,只需删除邀请就不会撤销用户对项目的许可。那么最初创建一个项目的用户呢,他们根本就没有邀请。

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

感谢

回答

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 %> 
0

使用​​办理邀请函。 https://github.com/scambra/devise_invitable

+0

嗨,谢谢你的回应。纠正我,如果我错了,但据我所知,devise_invitable是伟大的应用程序范围内的邀请(例如:通过引荐注册应用程序),但不给你太多的范围内的邀请.. – slehmann36

+0

它提供了几个范围,您可以根据业务逻辑覆盖它 –