Ruby on rails tutorial chapter 9.3.1 practice

74 Views Asked by At

I'm studying rails with Ruby on rails tutorial. And I've tried practice chapter 9.3.1

First, I added the code below on 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
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

Next added on app/controllers/sessions_controller.rb

test "login with remembering" do
    log_in_as(@user, remember_me: '1')
    assert_equal cookies['remember_token'], assigns(:user).remember_token
  end

Then put rails test on terminal and got failure.

   test_login_with_remembering#UsersLoginTest (0.61s)
   --- expected
   +++ actual
   @@ -1 +1,2 @@
   -"InI2WGVlWWFKV1FqQklWSGtyQmtUT3ci--682221f00216ded6f16e0eee27c8b63ea5501d07"
   +# encoding: US-ASCII
   +"r6XeeYaJWQjBIVHkrBkTOw"
   test/integration/users_login_test.rb:42:in `block in <class:UsersLoginTest>'

test/integration/users_login_test.rb:42 is "assert_equal cookies['remember_token'], assigns(:user).remember_token".

I can"t understand what happened and what should I do. Please tell me. And I'm very sorry about my terrible English...

I added the definition of the remember method rails(app/models/user.rb )

def remember
    self.remember_token = User.new_token
    update_attribute(:remember_digest, User.digest(remember_token))
end

I added the one more definition of the remember method rails(app/helpers/sessions_helper.rb)

def remember(user)
    user.remember
    cookies.permanent.signed[:user_id] = user.id
    cookies.permanent.signed[:remember_token] = user.remember_token
end
0

There are 0 best solutions below