Ruby on Rails示例应用密码重置链接跳转错误问题求助
解决Rails密码重置链接指向旧域名的问题
这种情况我之前帮朋友排查过,你代码里的production.rb配置看起来完全没问题,大概率是部署缓存或者配置未生效导致的,给你几个具体的排查和解决步骤:
确认生产环境的实际配置
登录Heroku控制台,运行以下命令进入生产环境的Rails控制台:heroku run rails console -e production然后输入以下代码查看当前生效的邮件默认host:
Rails.application.config.action_mailer.default_url_options如果输出的host不是你设置的
correct_host.herokuapp.com,说明你的代码部署没成功,或者有其他配置覆盖了这个值。检查是否有重复配置或环境变量覆盖
排查这几个地方:- 项目根目录的
config/application.rb里有没有设置default_url_options,如果有会覆盖生产环境的配置; - 查看Heroku的环境变量,有没有类似
DEFAULT_URL_OPTIONS或者HOST这类变量,可能会被Rails自动读取并覆盖配置; - 检查
config/initializers目录下的文件,有没有额外的邮件配置代码。
- 项目根目录的
清除Heroku缓存并重新部署
旧的配置可能被缓存了,先清理缓存:heroku repo:purge_cache然后重新推送代码部署:
git push heroku main # 如果你用的是main分支,否则替换成你的分支名确认邮件模板的链接生成方式
打开密码重置邮件的模板(一般在app/views/user_mailer/password_reset.html.erb或者对应的text模板),确保链接是用Rails的URL helper生成的,比如:<%= edit_password_reset_url(@reset_token, email: @user.email) %>而不是硬编码的
https://wrong.com/...(不过你说代码里没找到错误host,这个可以快速确认下)
按照这些步骤排查下来,基本就能解决链接指向旧域名的问题了。我之前遇到的情况就是缓存没清,重新部署后就正常了。
内容的提问来源于stack exchange,提问作者T M
相关产品推荐
相关产品推荐

