/ / Сравнението на низове на релси не успява на шестнадесетичен низ - ruby-on-rails, ruby, ruby-on-rails-3

Сравнението на рендовете на релсите е неуспешно на хексан низ - рубин на релси, рубин, рубин на релси-3

В момента изграждам поканен модел, който изпращаизпратете покани по имейл с връзка. Връзките са „защитени“ с шаш хеш. Контролерът обаче не успява да провери хеша и не мога да разбера защо ...

Генерираните връзки изглеждат така

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

и контролерът се опитва да ги провери

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

Сравнението на низовете се проваля всеки път. Аз проверих тройно, но струните изглеждат напълно идентични.

EDIT: Някои данни за отстраняване на грешки

logger.debug params
logger.debug @invitation.hash

води до следния изход в development.log

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

Отговори:

1 за отговор № 1

Вижте дали @invitation.hash всъщност не се обажда Object#hash.