2014-12-10 13 views
6

Pracuję nad tutorialem michal hart's Ruby on rails w rozdziale 8 Click here for details, utknąłem w ćwiczeniu 8.6, autor wprowadził sposób dostępu do wirtualnego atrybutu remember_token w teście integracji i pozostawił dla nas trochę pracy,Jak uzyskać dostęp do wirtualnego atrybutu remember_token w teście integracji?

assert_equal assigns(:user).FILL_IN, FILL_IN 

Mam zastąpić poprawny kod symbolem zastępczym "FILL_IN". Po prostu nie mogłem wymyślić właściwego. Próbowałem z

assert_equal assigns(:user).cookies, remember_token 

app/controllers/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 

Ale to nie działa, erros:

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

wiem, że to coś bardzo proste, tak naprawdę Zrobiłem trochę badań, wydaje się, że nikt nie zadał tego samego pytania, ponieważ samouczek jest całkiem nowy. Proszę zrozumieć, że jestem tylko początkującym, byłbym bardzo wdzięczny, jeśli możesz mi pomóc rozwiązać ten problem.

+0

używasz ciasteczek jak atrybut użytkownika lub metody użytkownika. Można przetłumaczyć "assigns (: user) .cookies" jako @ user.cookies, co jest nie tak (pliki cookie nie zależą od użytkownika i są przechowywane w komputerze, a nie w aplikacji szyny). – Katarzyna

Odpowiedz

12

Mam odpowiedź, kupując książkę Michaela. Odpowiedź znajduje się w podręczniku rozwiązania. Myślę, że warto podzielić się ponieważ mam pytanie to pytanie

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

To nic nie warte, że czytanie o języku ruby ​​będzie wielce pomocne w zrozumieniu tego kodu, Mój problem był i nie robić dużo czytania o Ruby przed Nurkuję w badaniach na szynach, ale to nie jest duży problem, właśnie ruszyłem na Ruby, aby uzyskać głębsze zrozumienie języka Ruby! Powodzenia

+2

Ciągle mam błąd, nie wiem dlaczego: NoMethodError: niezdefiniowana metoda 'remember_token 'dla zero: NilClass – Katarzyna

+0

Hej, sugeruję, żebyś sprawdził repozytorium github Michaela. wszystko tam jest. – Snailwalker

0

mam błąd, gdy próbowałem jak @Snailwalker

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

Ale to działa tak

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

Powiązane problemy