2016-09-15 37 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

它提供了幾個範圍,您可以根據業務邏輯覆蓋它 –