Поскольку гемы аутентификации, такие как Devise или Clearance, используют свои собственные встроенные контроллеры, у меня есть несколько вопросов при их переопределении.Каждый раз, когда я пытался переопределить это, что-то идет не так, и я не знаю, что именно вызвало ошибку.
Например, чтобы создать новый пользовательский контроллер с Devise, я понимаю, что имеюсоздать контроллер, как это:
# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
Все хорошо.Теперь предположим, что я хочу добавить определенные элементы в def new
части контроллера.
1.) Чтобы оставить часть def create
контроллера в покое, я должен вставить
def create
super
end
Это правильно?Или мне вообще нужно ссылаться на него в новом контроллере?
2.) Если я наберу
def new
#my custom code here
end
Заменит ли это часть def new
исходного контроллера Devise,или это просто добавляет к этому?То есть я должен также вставить
resource = build_resource({})
respond_with_navigational(resource){ render_with_scope :new }
, который является поведением по умолчанию для новой части def Devise registrations_controller.rb ?
3.) В Devise есть фильтр, который запрещает вам регистрироваться, если вы вошли в систему, но мне нужно это переопределить.Как мне это сделать?Я предполагаю, что это как-то связано с prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
частью registrations_controller.rb , но я не слишком уверен.
Те же вопросы относятся к оформлению, хотя и с небольшимразные маршруты и файлы ... (Я тоже прошу Clearance, потому что я еще не решил, какой гем аутентификации использовать - Clearance мне нравится из-за легкого кода, но у Devise есть дополнительные функции, которые мне тоже понадобятся).