Когда пользователь пытается войти в систему, запрос направляется в метод create
вашего sessions_controller.rb
, где создается сеанс для этого пользователя, если учетные данные действительны. В этом методе вам просто нужно проверить, заполнен ли столбец deleted_at
, а затем некоторую логику ветвления, чтобы либо перенаправить на любую целевую страницу, которая у вас есть для действительных входов в систему, либо на страницу повторной активации.
Ваш код будет выглядеть примерно так, как в следующем примере, но, опять же, вы не предоставили подробности реализации, поэтому вам придется адаптировать:
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
unless user.deleted_at.nil?
my_user_login_method
redirect_to user # or redirect to a dashboard/landing page/whatever
else
render 'reactivate' # this would be a view for your reactivation page
end
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end