Я делюсь своим решением, так как оно немного другое, но, на мой взгляд, ближе к обычному потоку пользователей (перенаправьте на страницу благодарности, где у вас есть кнопка для повторной отправки без повторной отправки письма), и вы не будете придется переопределить контроллер подтверждений.
После регистрации пользователь перенаправляется на страницу «Спасибо». В регистрации_контроллер:
def after_inactive_sign_up_path_for(resource)
session[:user_id] = resource.id
redirect_to thanks_url
end
в контроллере пользователя, вы просто используете .send_confirmation_instructions для пользователя
def thanks
@user = User.find_by(id: session[:user_id])
end
def resend_confirmation
user = User.find_by(id: params[:user_id])
user.send_confirmation_instructions
end
маршруты:
get '/thanks', to: 'users#thanks'
post '/resend_confirmation', to: 'users#resend_confirmation', as: 'resend_confirmation'
наконец, в представлении «спасибо»:
<%= button_to "Resend confirmation", resend_confirmation_path(:user_id => @user.id) %>
Это может быть немного исправлено, я уверен, поскольку я только что написал это, и я все еще новичок в Rails, но я искал такого рода решения в стеке и не мог найти его, поэтому я думал поделиться этим.