You need to enable JavaScript to run this app. Rails项目Site查询在本地测试返回nil 服务器及控制台运行正常
优惠活动
大模型
产品
解决方案
定价
更多

Rails项目Site查询在本地测试返回nil 服务器及控制台运行正常

问题根因

  • 你的控制台运行在Rails开发环境,操作的是开发数据库,你手动创建的host=www.example.com的Site记录仅存在于开发库。Rails测试用例运行在独立的测试环境,使用单独的测试数据库,默认每次执行前会清空数据、仅加载你配置的fixture内容,开发库的记录不会同步到测试库。
  • 你配置的fixture中,thirty_one站点的host值为example.com,但你控制器逻辑拼接出的查询值为www.example.com,两者不匹配,自然查询返回nil。
  • 日志中的CACHE记录是Rails查询缓存的正常表现,同一个查询第二次调用时直接读取缓存,不是导致结果为空的原因。

修复方案

  1. 调整fixture配置,将host改为测试需要的www.example.com:
thirty_one:
  id: 31
  shop_id: 31
  host: "www.example.com"
  1. (可选)如果业务逻辑允许不带www的域名访问,可在测试请求时指定Host头适配现有fixture:
get user_acqs_path, headers: { "Host" => "example.com" }
  1. 执行命令确保测试数据库结构和fixture已正确加载:
rails db:test:prepare

内容的提问来源于stack exchange,提问作者Jerome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 13:45:04