2016-07-17 6 views
0

В моем блоге есть модель для разработки под названием Admin.Только разрешить администратору создавать нового администратора

Я определенно не хочу, чтобы посетители моего сайта могли зарегистрироваться в качестве администратора. Так что я сделал следующее:

В моей config/routes.rb

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

После этого я создал новый app/controllers/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
    before_action :authenticate_admin! 
end 

Но когда я посещаю мой my.site/admins/sign_up как «нормальный посетитель» authenticate_admin! крюк не позвонил - так что я получаю полную регистрационную форму. Почему это не работает так, как ожидалось?

ответ

1

Принятый ответ от this question может помочь. Подводя итог, RegistrationsController DEViSE в skips authentication by default:

prepend_before_action :require_no_authentication, only: [:new, :create, :cancel] 

Итак, пропустите его и ваш before_action должен работать:

class RegistrationsController < Devise::RegistrationsController 
    skip_before_action :require_no_authentication 
    before_action :authenticate_scope! 
end 
+0

Спасибо. Почти работал для меня. Как отметил Ламп под принятым ответом в вашем связанном вопросе, мне пришлось заменить 'authenticate_admin!' На 'authenticate_scope!'. Если вы измените свой ответ на это, я могу принять его. – zarathustra

+0

Только что отредактировал ответ. Рад, что это помогло! – mmichael

Смежные вопросы