我正在关注 railstutorial.org第三版,目前正在研究第8章:登录,注销。
我在代码 list 8.51中发现了一个问题(登录时不记得测试):
assert_nil cookies['remember_token']
当我执行
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>'
否则,当我更改为以下代码时,它将返回GREEN,并且“登录-注销”过程正常运行。
assert_not_nil cookies['remember_token']
遇到相同问题的任何人都可以解释这种情况吗?
谢谢你。
最佳答案
我只是犯了这个错误...
TL; DR;从remember user
中删除sessions_controller.rb
看一看Listing 8.34。
你应该找到remember user
在session_controller.rb
中。
现在引用同一文件,看看Listing 8.49。
作者对这一行进行了很多处理,但是如果您仅粘贴它而不删除对remember user
的调用,那么仍然会生成 token 。
因此,在粘贴此行时:params[:session][:remember_me] == '1' ? remember(user) : forget(user)
确保它替代了对remember user
的调用。