Rails 7 ActiveStorage 固定装置附件未连接

问题描述 投票:0回答:1

我正在关注Active Storage Overview中的文档,并尝试在这里找到的答案,但没有运气。

此测试中的断言总是失败:

test "verify attached video" do
  att = sponsor_images(:sponsor_video_1).video_att
  assert att.attached?
end

这是我的相关文件:

config/storage.yml

test_fixtures:
  service: Disk
  root: <%= Rails.root.join("tmp/storage_fixtures") %>

模型/sponsor_image.rb

class SponsorImage < ApplicationRecord
  has_one_attached :video_att
  validates :video_att, file_content_type: {
    allow: /^video\/(mp4|m4v)$/,
    if: -> { video_att.attached? }
  }
...

赛程/sponsor_images.yml

sponsor_video_1:
  sponsor: sponsor_1
  name: Test SponsorImage Video

fixtures/active_storage/attachments.yml

video:
  name: video_att
  record: sponsor_image_1 (SponsorImage)
  blob: video_blob

fixtures/active_storage/blobs.yml

video_blob: <%= ActiveStorage::FixtureSet.blob filename: "1920x1080.mp4", service_name: "test_fixtures" %>

文件

fixtures/files/1920x1080.mp4
确实存在并且可读。

当我使用调试器运行测试时,我可以看到附件存在且数据正确。该文件确实是在

tmp/storage_fixtures
下创建的。但是
attached?
方法返回
false

我希望我错过了一些简单的东西,但我确实看不到它是什么。

ruby-on-rails minitest rails-activestorage
1个回答
0
投票

record
中的
attachments.yml
标识符需要从
sponsor_image_1
更改为
sponsor_video_1
以匹配
sponsor_images.yml
中的对象键名称。

这发生在我们最好的人身上,这就是为什么测试很重要:)

© www.soinside.com 2019 - 2024. All rights reserved.