ril*_*ham 8 ruby cookies ruby-on-rails session-cookies railstutorial.org
我正在关注railstutorial.org第3版,我目前正致力于第8章:登录,注销.
我在代码清单8.51中找到了一个问题(登录时没有记住测试):
assert_nil cookies['remember_token']
Run Code Online (Sandbox Code Playgroud)
当我执行:时rake test,它返回RED并出现以下错误:
FAIL["test_login_without_remembering", UsersLoginTest, 1.268578948]
test_login_without_remembering#UsersLoginTest (1.27s)
Expected "" to be nil.
test/integration/users_login_test.rb:46:in `block in <class:UsersLoginTest>'
Run Code Online (Sandbox Code Playgroud)
否则,当我更改为以下代码时,它将返回GREEN并且登录 - 注销过程正常工作.
assert_not_nil cookies['remember_token']
Run Code Online (Sandbox Code Playgroud)
任何面临同样问题的人都能解释这个案子吗?
谢谢.
小智 22
我犯了这个错误......
TL; DR; remember user从中移除sessions_controller.rb
看一下代码清单8.34.你会发现
remember user
在session_controller.rb.
现在参考同一个文件,看一下代码清单8.49.作者对此行做了大量的介绍,但是如果你只是粘贴它而不删除调用remember user,那么令牌仍会生成.
所以,当粘贴在这一行:
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
确保它正在替换呼叫remember user.