2014-12-10 18 views
6

michal hart'ın Ruby on RailsClick here for details'daki öğretici üzerinde çalışıyorum, alıştırma 8.6'da takılıp kaldım, Yazar entegrasyon testinde sanal remember_token niteliğine erişmenin bir yolunu tanıttı veEntegrasyon testinde sanal remember_token niteliğine nasıl erişilir?

assert_equal assigns(:user).FILL_IN, FILL_IN 

Doğru kodu "FILL_IN" yer tutucusuyla değiştirmem gerekiyordu. Doğru olanı düşünemedim. Ben

assert_equal assigns(:user).cookies, remember_token 

app/denetleyicileri/sessions_controller.rb

def create 
    @user = User.find_by(email: params[:session][:email].downcase) 
    if @user && @user.authenticate(params[:session][:password]) 
     log_in @user 
     params[:session][:remember_me] == '1' ? remember(@user) : forget(@user) 
     redirect_to @user 

ile çalıştı Ama işe yaramadı, Erros:

"test_login_with_remembering", UsersLoginTest, 0.590876] 
test_login_with_remembering#UsersLoginTest (0.59s) 
NoMethodError:   NoMethodError: undefined method `cookies' for #<User:0x007f964f1a91d0> 

Ben aslında, çok basit bir şey olduğunu biliyorum biraz araştırma yaptı, hiç kimse aynı soruyu sormadı, çünkü öğretici oldukça yeni. Lütfen sadece yeni başlayan bir insan olduğumu anlayın, bu sorunu çözmek için bana yardımcı olabilirseniz çok memnun olurum.

+0

gibi çalışır. 'Assigns (: user) .cookies' komutunu @ user.cookies olarak yanlış çevirebilirsin (çerezler kullanıcınınkullanıcısına bağlı değildir ve raylar uygulamasında değil, bilgisayarda saklanır). – Katarzyna

cevap

12

Michael'ın kitabını satın alarak cevabı aldım. Ve cevap, çözüm kılavuzuna dahil edilmiştir. Bunun ben bu soruyu sordum çünkü paylaşmak için değer olduğunu düşünüyorum

assert_equal assigns(:user).remember_token, cookies['remember_token'] 

O, yakut dili hakkında Okuma bu kodu anlamak için büyük ölçüde yararlı olacaktır değer bir şey, Benim sorunum ben daha önce Ruby hakkında okuma çok yapmadım edildi bulunuyor Rails çalışmalarına daldım, ama bu büyük bir sorun değil, Ruby dili hakkında daha derin bir anlayış elde etmek için Ruby'ye yeni başladım! Ben assert_equal assigns(:user).remember_token, cookies['remember_token']

@Snailwalker

gibi çalıştı

+2

Hala bir hatam var, neden emin değil: NoMethodError: nil için tanımlanmamış yöntem 'remember_token ': NilClass – Katarzyna

+0

Michael'ın github repo'yu kontrol etmenizi öneririm. hepsi burada. – Snailwalker

0

İyi şanslar bir hata aldım Ama Kullanıcı nitelik veya kullanıcı yöntemi olarak çerezleri kullanarak bu

assert_equal assigns[:user].remember_token, cookies['remember_token']

İlgili konular