3

実装しました

gem 'devise_invitable' 

モデルUserの場合、既存のユーザーを招待する際に問題に直面しています。エラーは言う"USER IS ALREADY REGISTERED"User同じユーザーを別の招待リストに追加したいと考えています。これはどのように行うことができますか?

4

2 に答える 2

1

これを実現するには、元の Devise::Invitations コントローラーから継承する新しい Invitations コントローラーを作成する必要がありますが、create メソッドのロジックが変更されています。

gem のREADMEには、このプロセスを説明する「Configuring Controllers」に関するセクションがあります。また、親コントローラーのソース コードを確認することをお勧めします。これは、コンテキストを提供するのに役立ちます。

私はあなたが望むものと同様のことを行い、Rails の組み込みメソッドを使用しましたfind_by_email。これが私が使用したコードの一部です...

def create
    # new user
    if User.find_by_email(invite_params[:email]).nil?
      super
    # existing user
    else
      @u = User.find_by_email!(invite_params[:email])
    ....more code that does what you want....
    end
  end

注: Rails はスマートで、作成した子コントローラーに競合する命令が与えられていない場合、親コントローラーのロジックを使用します。ポイントは、コントローラー全体を書き直す必要がないということです。理想的には、子コントローラーで変更を行い、呼び出しsuperて親コントローラーの同じメソッドに戻り、アクションを終了します。

于 2013-08-27T05:22:26.720 に答える