/ / Il confronto delle stringhe Rails non riesce su una stringa esadecimale: ruby-on-rails, ruby, ruby-on-rails-3

Il confronto delle stringhe di rails fallisce su una stringa esadecimale - ruby-on-rails, ruby, ruby-on-rails-3

Attualmente sto creando un modello di invito che inviainviti via e-mail con un link. I collegamenti sono "protetti" con un hash sha1. Tuttavia, il controller non riesce a verificare l'hash e non riesco a capire perché ...

I link generati sembrano

/projects/1/invitations/12?hash=c043b70c359a85e20cd9933c9cd37ef3f8943d7b

e il controller tenta di verificarli con

def show
@invitation = Invitation.find(params[:id])
if @invitation.hash.to_s != params[:hash].to_s
redirect_to root_url
....

Il confronto delle stringhe fallisce ogni volta. Ho controllato tre volte, ma le stringhe sembrano perfettamente identiche.

EDIT: alcune informazioni di debug

logger.debug params
logger.debug @invitation.hash

genera il seguente output in development.log

{"hash"=>"c043b70c359a85e20cd9933c9cd37ef3f8943d7b", "action"=>"show",
controller"=>"invitations", "project_id"=>"1", "id"=>"12"}
c043b70c359a85e20cd9933c9cd37ef3f8943d7b

risposte:

1 per risposta № 1

Vedi se @invitation.hash non sta effettivamente chiamando Object#hash.