2016-09-15 14 views
1

私は、ユーザー(Deviseが扱う)を共同作業者(GitHubリポジトリや共同作業者と同じように)に招待できるプロジェクトを持つレールアプリを構築しています。私は招待状を実行することに苦労しています(特に協力者を削除する)。私はthis tutorialに従っていますが、招待状の作成は実行中ですが、チュートリアルでは招待状の取り消し(協力者の削除)については触れていません。プロジェクトとの共同作業者の招待と削除 - Rails

私はprojects_controller.rbファイルとinvites_controller.rbファイルを持っています。招待コントローラは新しい招待状の作成を処理します。これはうまくいきます(ユーザーが既に存在する場合は、プロジェクトにすぐ追加されます。ユーザーがいない場合は、入力したメールアドレスに招待状が送信されます)。

共同編集者を削除する機能を追加するにはどうすればよいですか?私にとっては、invites#destroy(その招待状はそのコントローラで作成されている)を使用するのは理にかなっていますが、単に招待を削除しても、プロジェクトに対するユーザーの許可は取り消されません。そして最初にプロジェクトを作成するユーザーはどうですか?彼らは招待状を一切持っていません。

私はここでどのような道を選ぶべきですか? これ以上の情報が役立つかどうか教えてください。

おかげ

答えて

1

このボタンを使用して共同編集者を削除することができます:

# 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

は、招待状を処理するための​​を使用してください。

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 

あなたのビューあなたはhas_manyの関連でのプロジェクトへの協力者を処理すると仮定すると https://github.com/scambra/devise_invitable

+0

こんにちは、ありがとうございます。これは、いくつかを提供していますが、スコープの招待のためにあなたに多くを与えるものではありません... – slehmann36

+0

:私が間違っているなら、私を修正して、私はそれを理解するよう、devise_invitableは、アプリケーション全体の招待(紹介経由でアプリにサインアップなど)に最適ですスコープは、ビジネスロジックごとにオーバーライドすることができます –

関連する問題