Вы можете подключиться к контроллеру Devise, вызвав super с блоком:
# config/routes.rb
devise_for :user, controllers: {
registrations: 'my_registrations'
}
# app/controllers/my_registrations_controller.rb
class MyRegistrationsController < Devise::RegistrationsController
def create
super do |user|
5.times { user.accounts.create }
end
end
end
Devise возвращает блок после того, как пользователь был сохранен. Этот подход, как правило, предпочтительнее для обратных вызовов модели, поскольку вы лучше контролируете, где именно в вашем приложении он выполняется, и это не замедляет тестирование.
Логика заполнения учетной записи также является основным кандидатом для извлечения в объект службы .