You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7 ActiveStorage Fixture附件无法关联,attached?断言失败

问题排查与解决方案

你的测试断言assert att.attached?始终失败,核心原因是Active Storage附件Fixture与主模型Fixture的关联不匹配,再加上测试环境未配置对应存储服务,导致attached?方法无法正确识别附件状态。

1. 修复附件Fixture的关联错误

在fixtures/active_storage/attachments.yml中,你指定的关联记录是sponsor_image_1 (SponsorImage),但sponsor_images.yml里的Fixture名称是sponsor_video_1,两者无法对应。修改如下:

# fixtures/active_storage/attachments.yml
video:
  name: video_att
  record: sponsor_video_1 (SponsorImage)  # 改为和sponsor_images.yml一致的Fixture名称
  blob: video_blob

2. 配置测试环境使用指定存储服务

确保config/environments/test.rb中设置了和storage.yml匹配的Active Storage服务:

# config/environments/test.rb
Rails.application.configure do
  # ...其他配置
  config.active_storage.service = :test_fixtures
end

3. 清理无效存储文件(可选)

如果之前的测试生成了无效存储文件,可先清理临时目录再重新运行测试:

rm -rf tmp/storage_fixtures
rails test

修改后,sponsor_images(:sponsor_video_1).video_att.attached?会正确返回true——附件Fixture现在能正确关联到对应SponsorImage记录,且测试环境使用了匹配的存储服务识别附件状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:17:23