Я изучаю рельсы с Ruby на уроке по рельсам. И я попробовал потренироваться в главе 9.3.1
Сначала я добавил следующий код в app / controllers / session_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
Затем добавил в app / controllers / session_controller. rb
test "login with remembering" do
log_in_as(@user, remember_me: '1')
assert_equal cookies['remember_token'], assigns(:user).remember_token
end
Затем установите тестирование рельсов на терминале и получите сбой.
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 /gration / users_login_test.rb: 42 is "assert_equal cookies ['запомнить_token'], назначает ( : user) .remember_token ".
Я не могу понять, что случилось и что мне делать. Пожалуйста, скажите мне. И мне очень жаль моего ужасного Энгли sh ...
Я добавил определение rails метода запоминания (app / models / user.rb)
def remember
self.remember_token = User.new_token
update_attribute(:remember_digest, User.digest(remember_token))
end
Я добавил еще одно определение rails метода запоминания (app / helpers / session_helper.rb)
def remember(user)
user.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent.signed[:remember_token] = user.remember_token
end