Moja User.rb:Devise confirmation_token jest nieprawidłowy
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,:confirmable,:token_authenticatable,
:recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:name]
Moje trasy:
devise_for :users, :controllers => { :sessions => "sessions", :confirmations => "confirmations", :passwords => "passwords", :registrations => "registrations" }
Moja ConfirmationsController to standardowy kontroler, ale z innego przekierowania.
mam link na mój e-mail, takich jak:
/users/confirmation?confirmation_token=167bad44a15e02b0bd570b51e1bf927b88368d8855d92b9833a24017a2bad4be
W użytkownika bazy danych ma
confirmation_token:167bad44a15e02b0bd570b51e1bf927b88368d8855d92b9833a24017a2bad4be
ale po kliknięciu na ten link i tylko patrz strona z:
Resend confirmation instructions
Confirmation token is invalid
Czego nie robię - co jeszcze muszę ustawić.
CONFIRMATIONCONTROLLER:
def resource_params
params.require(:user).permit(:confirmation_token)
end
private :resource_params
def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
if resource.errors.empty?
set_flash_message(:notice, :confirmed) if is_navigational_format?
sign_in(resource_name, resource)
session['new_user'] = true
respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
else
respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
end
end
protected
# The path used after resending confirmation instructions.
def after_resending_confirmation_instructions_path_for(resource_name)
new_registration_path(resource_name)
end
mówię „standardowy kontroler”, ponieważ kiedy go usunąć i nie używać niestandardowych kontrolera problemu jest to, że samo.
Po przesłaniu "standardowego" zastąpionego kodu kontrolera. – TheIrishGuy
i? Czy jest jakiś błąd lub co ... zmieniam tokena na abcde w bazie danych iw adresie URL - i nic się nie zmieni – Wordica
To może nie rozwiązać całego problemu, ale jeśli po prostu chcesz przekierować na inną ścieżkę, nie powinieneś kopiować/wklej całą metodę. Powinieneś nadpisać chronioną metodę 'after_confirmation_path_for', aby zwrócić wybraną ścieżkę. –