我正在关注 Hartl 的 Ruby on Rails 教程,刚刚完成了有关登录和退出应用程序的章节。一切都在 localhost 上完美运行,但是当部署到 heroku 时,它会自动将您作为示例用户登录,并且退出按钮不再起作用。
就像我之前所说的,我可以在 localhost 上毫无问题地退出。它似乎只在heroku上被打破。
我还应该补充一点,如果我在以本地主机身份登录时创建一个新用户,它实际上会创建一个新用户并以该新用户身份登录。您甚至可以作为新用户注销。但是,一旦您以新用户身份注销,它就会重新以示例用户身份登录。
如果有帮助,这里是示例应用程序:https ://serene-bayou-7583.herokuapp.com/
有谁知道这可能是什么原因造成的?我什至不知道我应该发布代码的哪一部分来帮助解决问题。
编辑:堆栈不会让我回答我自己的问题,所以这里是解决这个问题的其他人的方法
对于有此问题的其他人,这是我的问题的答案。从本质上讲,heroku 似乎将 NIL 与示例用户匹配。所以我们稍微修改一下代码来阻止这种行为。唯一的副作用是无法以示例用户身份保持登录状态,否则它可以正常工作!在您的会话助手中更改此设置:
def current_user
if cookies[:remember_token].present?
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
end