mio User.rb:Devise confirmation_token è valido
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,:confirmable,:token_authenticatable,
:recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:name]
miei itinerari:
devise_for :users, :controllers => { :sessions => "sessions", :confirmations => "confirmations", :passwords => "passwords", :registrations => "registrations" }
mio ConfirmationsController è un controller standard, ma con diversa reindirizzamento.
ho link sul mio email come:
/users/confirmation?confirmation_token=167bad44a15e02b0bd570b51e1bf927b88368d8855d92b9833a24017a2bad4be
In utente del database ha
confirmation_token:167bad44a15e02b0bd570b51e1bf927b88368d8855d92b9833a24017a2bad4be
ma quando clicco su quel link vedo solo la pagina con:
Resend confirmation instructions
Confirmation token is invalid
Cosa non faccio - cos'altro devo impostare.
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
dico "controller standard", perché quando ho rimuoverlo e non uso problema di controllo personalizzato è lo stesso.
Invia il codice del controller "standard" ignorato. – TheIrishGuy
e? C'è qualche bug o cosa ... cambio token ad abcde nel database e in url - e nulla cambia – Wordica
Questo potrebbe non risolvere l'intero problema, ma se vuoi semplicemente reindirizzare su un percorso diverso dopo la conferma non dovresti copiare/incolla l'intero metodo. È necessario sovrascrivere il metodo protetto 'after_confirmation_path_for' per restituire il percorso desiderato. –