少於 1 分鐘閱讀

方式1

# [path] route.rb
  devise_for :users, :skip => [:registrations]
  #拿掉registrations不只會拿掉註冊,還會拿掉編輯,所以下面要再手動加回來
  as :user do
    get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
    put 'users' => 'devise/registrations#update', :as => 'user_registration'
  end

方式2. override

# [path] app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
  def new
    flash[:info] = '目前不開放註冊'
    redirect_to root_path
  end

  def create
    flash[:info] = '目前不開放註冊'
    redirect_to root_path
  end
end
# [path] route.rb
  if Rails.env.production?
    devise_for :users, :controllers => { :registrations => "registrations" } 
  else
    devise_for :users
  end

備註

  1. registrations的hash代表我要override的controller
  2. 可以到gem裡面看哪些可以override

參考

  1. 第一種方式
  2. 第二種方式
  3. 可override的controller

更新時間:

留言