deviseでユーザ新規登録させない

devise (3.2.4)

ユーザレコードはseedとかから取り込むので、利用者には新規登録させないみたいなケース.

controller

app/controllers/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  def new
    redirect_to '/users/sign_in', notice: 'ユーザの新規作成はできません。'
  end

  def create
    redirect_to '/users/sign_in', notice: 'ユーザの新規作成はできません。'
  end

  private
  def account_update_params
    params.require(:user).permit(:username, :email, :password, :password_confirmation, :current_password)
  end
end

オーバーライドしてしまう。

routes

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

routesによくわからないdevise_forというメソッドがあるので、そこで認証で使うcontrollerを明示してやると、登録はそのcontrollerでしてくれるようになる。

deviseって(認証機能に手を入れる予定ないなら)便利だなぁ。