2016-07-16 18 views
3

私はRails 5プロジェクトでDeviseを使用しています。新しいユーザー登録を一時的に無効にしたいと思います。ビューのリンクを削除したり、ルートファイルを編集してこれを達成することができますが、そのためには新しい展開でコードを変更する必要があります。新しいユーザーが一定期間登録する機能を無効にするために、管理コンソールにオプションを追加したいと考えています。Deviseで登録を一時的に無効にする

私はこの機能を有効にしていますが、これはうんざりです。人々の登録機能を無効にすると、私が現在行っているのは、deviseビューで「新規ユーザー登録」リンクを隠すことだけです。デフォルトのパスを知っている人なら誰でもこれを回避できます。

実行時にどのようにこの機能を変更できますか?

答えて

4

従うことThis Devcsの登録コントローラを無効にするためのリンク。 基本的には、デフォルトの登録コントローラーであるDeviseをオーバーライドし、アクションの前フィルターを設定して、ユーザーが新しいユーザーを作成してからroot_pathなどの任意のパスにリダイレクトするかどうかを確認する必要があります。

devise_for :users, controllers: { registrations: "registrations"} 

アプリ/コントローラ/ registrations_controller.rb:登録コントローラオーバーライドするのconfig/routes.rbを中

アルターdevise_forライン

class RegistrationsController < Devise::RegistrationsController 

    before_action :check_new_registration_allowed?, only: [:new, :create] 

    protected 

    def check_new_registration_allowed? 
    redirect_to root_path unless @@allow_new_registration 
    end 

end 

は、私はグローバル@@allow_new_registrationを使用していることに注意してください。新しい登録が許可されているかどうかを確認する変数。管理者アクションの後にこれをオン/オフすることができます。あるいは、これらの情報をDBに格納して照会すると良いでしょう。

+0

回答としてアップマークされています。これを送っていただきありがとうございます - 非常に役に立ちました! – dingalingchickenwiing

関連する問題