実装しました
gem 'devise_invitable'
モデルUser
の場合、既存のユーザーを招待する際に問題に直面しています。エラーは言う"USER IS ALREADY REGISTERED"
。User
同じユーザーを別の招待リストに追加したいと考えています。これはどのように行うことができますか?
実装しました
gem 'devise_invitable'
モデルUser
の場合、既存のユーザーを招待する際に問題に直面しています。エラーは言う"USER IS ALREADY REGISTERED"
。User
同じユーザーを別の招待リストに追加したいと考えています。これはどのように行うことができますか?
これを実現するには、元の 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
て親コントローラーの同じメソッドに戻り、アクションを終了します。