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