Ruby на рельсах учебник глава 9.3.1 практика - PullRequest
0 голосов
/ 14 февраля 2020

Я изучаю рельсы с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...