Dlaczego nie można wymyślić, aby niepotwierdzeni użytkownicy mogli się logować, nawet jeśli ustawiono allow_unconfirmed_access_for?

Mamy istniejącą bazę użytkowników i dodajemy potwierdzenie e-mailem. Potwierdzenie jest opcjonalne, ale umożliwi dodatkowe funkcje. Użytkownicy nie muszą potwierdzać. Dodałem potwierdzalny moduł i uruchomiłem migracje. Potwierdzenie działa jak w reklamie.

Ale użytkownicy nie mogą się zalogować, ponieważ nie są potwierdzeni. Wszyscy obecni użytkownicy mają wartości zerowe potwierdzające, co jest tym, czego chcemy (użytkownicy mogą wrócić i potwierdzić swój e-mail w dowolnym momencie). Śledziłem wszystkie artykuły wiki Devise i ustawiłem allow_unconfirmed_access_for w inicjatorze:

config.allow_unconfirmed_access_for = 10.years 

Próbowałem również ustawić go w naszym modelu użytkownika:

devise :confirmable, allow_unconfirmed_access_for: 10.years

Próbowałem również użyć innych wartości (1. rok, 500 dni itd.)

Mój SessionsController, który nie różni się zbytnio od metody Devise'a (tutaj na githubie)

class Users::SessionsController < Devise::SessionsController
  respond_to :json

  def new
    redirect_to "/#login"
  end

  def create
    resource = warden.authenticate(auth_options)
    if !resource
      render json: {error: "Invalid email or password" }, status: 401 and return
    end

    sign_in(resource_name, resource)
    render "sign_in", formats: [:json], locals: { object: resource }
  end
end

Odpowiedź Devise:

{"błąd": "Musisz potwierdzić swoje konto przed kontynuowaniem."}

Devise 2.1.2 z Rails 3.2.9.

questionAnswers(3)

yourAnswerToTheQuestion