2014-12-31 5 views
5

मैं रेल ऐप्लिकेशन पर किसी माणिक में नई विधि निम्नलिखित है:रेल कुकी जारी करना

def new 
    if cookies[:owner].empty? 
    cookies[:owner] = SecureRandom.hex 
    end 
    @movie = Movie.new 
    @movie.owner = cookies[:owner] 
end 

असल में, प्रत्येक नए उपयोगकर्ता एक कोड है जो उन्हें पहचान करता है (हालांकि अभी कुकी द्वारा) जारी किया जा माना जाता है। तो जब उपयोगकर्ता मूवी बनाता है, तो बनाई गई कुकी owner फ़ील्ड में संग्रहीत होती है।

तो दो समस्याओं:

  1. .empty ले रहे हैं? जब मैं ब्राउज़र से कुकी हटाता हूं, तो विधि undefined method खाली हो जाती है? ' शून्य के लिए: [: मालिक] मूल्य @ movie.owner कोड से अलग है NilClass`

  2. जब मैं कर पहले से ही ब्राउज़र में सेट एक कुकी कुकी हो, और फिर एक फिल्म बनाते हैं, तो?

+0

मुझे यकीन नहीं है कि मैं अच्छी तरह से समझ गया हूं। क्या आप अलग-अलग ब्राउज़रों के भीतर एक ही कुकी साझा करने की कोशिश कर रहे हैं? – turhanco

उत्तर

8
  1. कुकीज़ [: मालिक] या तो हो nil (जब यह सेट नहीं किया गया), या एक स्ट्रिंग (जब यह स्थापित किया गया है)। विधि आप blank? है के लिए देख रहे हैं, empty?

    2.1.0 :003 > nil.blank? 
    => true 
    
    2.1.0 :005 > "i'm not blank".blank? 
    => false 
    
    2.1.0 :006 > "  ".blank? 
    => true 
    
  2. अपने दूसरी समस्या के रूप में करने के बजाय: जहां save विधि कहते हैं? क्या आपके पास Movie मॉडल पर कोई कॉलबैक है जो owner विशेषता को फिर से लिख सकता है?

1

आप इसका भी उपयोग कर सकते हैं।

def new 
    if !cookies[:owner] 
     cookies[:owner] = SecureRandom.hex 
    end 
    @movie = Movie.new 
    @movie.owner = cookies[:owner] 
end 
संबंधित मुद्दे