Momentálne budujem model pozvánky, ktorý pošlee-mailové pozvánky s odkazom. Odkazy sú „zabezpečené“ pomocou hash sha1. Ovládač však nedokáže overiť hash a neviem zistiť, prečo ...
Vygenerované odkazy vyzerajú
/projects/1/invitations/12?hash=c043b70c359a85e20cd9933c9cd37ef3f8943d7b
a kontrolór sa ich pokúsi overiť pomocou
def show
@invitation = Invitation.find(params[:id])
if @invitation.hash.to_s != params[:hash].to_s
redirect_to root_url
....
Porovnanie reťazcov zlyhá zakaždým. Trojnásobne som skontroloval, ale reťazce sa zdajú úplne identické.
ÚPRAVA: Niektoré informácie o ladení
logger.debug params
logger.debug @invitation.hash
vedie k nasledujúcemu výstupu v súbore development.log
{"hash"=>"c043b70c359a85e20cd9933c9cd37ef3f8943d7b", "action"=>"show",
controller"=>"invitations", "project_id"=>"1", "id"=>"12"}
c043b70c359a85e20cd9933c9cd37ef3f8943d7b
odpovede:
1 pre odpoveď č. 1Pozri Ak @invitation.hash
v skutočnosti nevolá Object#hash
.