How to Remove/Disable Sign Up From Devise How to Remove/Disable Sign Up From Devise ruby ruby

How to Remove/Disable Sign Up From Devise


The easiest way is just removing :registerable devise module from the default list defined into your Model (the class name used for the application’s users, usually User).

class User < ActiveRecord::Base  devise :database_authenticatable, :registerable,         :recoverable, :rememberable, :trackable, :validatable  ...end

So you'll have it like this:

class User < ActiveRecord::Base  devise :database_authenticatable,         :recoverable, :rememberable, :trackable, :validatable  ...end


Solution to removing sign_up path from Devise

Enter the following at the beginning of routes.rb

Rails.application.routes.draw do  devise_scope :user do    get "/sign_in" => "devise/sessions#new" # custom path to login/sign_in    get "/sign_up" => "devise/registrations#new", as: "new_user_registration" # custom path to sign_up/registration  end

...After the statement above, add the following below in routes.rb

devise_for :users, :skip => [:registrations]   as :user do  get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'  put 'users' => 'devise/registrations#update', :as => 'user_registration'  end

This will remove/disable the user/sign_up path for Devise without breaking edit_user_registration_path

Restart your rails server and it should work.


I just had the same issue. My solution is a mix of these answers.

  1. Comment out or remove :registerable in user.rb:
class User < ActiveRecord::Base  devise :database_authenticatable, #:registerable,         :recoverable, :rememberable, :trackable, :validatableend
  1. Remove the registration paths from devise_for in routes.rb:
devise_for :users, :skip => [:registrations], controllers: {  sessions: 'users/sessions'}

Now Devise will skip all of the registration links from their view and also you no longer have the registration paths on your routes.