/ / रेल स्ट्रिंग की तुलना एक हेक्स स्ट्रिंग पर विफल होती है - रूबी-ऑन-रेल, रूबी, रूबी-ऑन-रेल्स -3

रेल स्ट्रिंग तुलना हेक्स स्ट्रिंग पर विफल होती है - रूबी-ऑन-रेल, रूबी, रूबी-ऑन-रेल -3

मैं वर्तमान में एक आमंत्रण मॉडल बना रहा हूं जो भेजता हैएक लिंक के साथ ईमेल आमंत्रण। लिंक एक sha1 हैश के साथ "सुरक्षित" हैं। हालांकि, नियंत्रक हैश को सत्यापित करने में विफल रहता है और मैं "यह पता लगा सकता हूं कि क्यों ...

जेनरेट किए गए लिंक जैसे दिखते हैं

/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
....

हर बार स्ट्रिंग तुलना विफल हो जाती है। मैंने जाँच की है, लेकिन तार पूरी तरह से समान हैं।

संपादित करें: कुछ डिबगिंग जानकारी

logger.debug params
logger.debug @invitation.hash

विकास में निम्नलिखित उत्पादन में परिणाम ।log

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

उत्तर:

उत्तर № 1 के लिए 1

देखो अगर @invitation.hash वास्तव में फोन नहीं कर रहा है Object#hash.