【问题标题】:Attach file Fixtures Minitest附加文件 Fixtures Minitest
【发布时间】:2021-06-14 02:09:49
【问题描述】:

我正在尝试在 this guide 之后的夹具模型中附加图像,但由于以下错误,我的所有测试都失败了

NameError: uninitialized constant ActiveStorage::FixtureSet
test/fixtures/active_storage/blobs.yml:1:in `get_binding'

我找不到任何对 ActiveStorage::FixtureSet 进行初始化的人

我的 blob 夹具

cafe_blob: <%= ActiveStorage::FixtureSet.blob( 
  filename: "cafe.jpg", 
) %>
soda_blob: <%= ActiveStorage::FixtureSet.blob( 
  filename: "soda.jpg", 
) %>

【问题讨论】:

    标签: ruby-on-rails ruby activerecord ruby-on-rails-5 rails-activestorage


    【解决方案1】:

    我遇到了同样的问题,看起来这个方法直到 Rails 6.2 才会发布(在源代码中转到 ActiveStorage::FixtureSet 的早期标记显示该文件在 6.1 中不存在)并且仅在边缘指南中显示了对此的参考,而不是发布的指南。

    我通过手动指定 ActiveStorage 所需的字段来解决此问题:

    avatar_blob:
      key: '12345'
      filename: 'hot_dog.png'
      content_type: 'image/png'
      byte_size: 27172
      service_name: 'amazon'
      checksum: 'NzJmNGZkYTI4ODk5M2QxMTAzZTI3ZTgxMTM5MGIyYWY='
    

    【讨论】:

      【解决方案2】:

      我已关注this answer,但基于生成的令牌的文件位置不起作用,所以我要做的唯一区别是将文件放在固定装置/文件中并用作 blob 字节大小和校验和的基础,像这样:

      在fixtures/active_storage/blob.yml中

      cafe_picture_blob:
        key: scxrex8xx73inir3c6216mrmowv0
        filename: cafe.jpg
        content_type: image/jpeg
        metadata: '{"identified":true,"analyzed":true}'
        byte_size: <%= File.size(Rails.root.join('test', 'fixtures', 'files', 'cafe.jpg')) %>
        checksum: <%= Digest::MD5.file(Rails.root.join('test', 'fixtures', 'files', 'cafe.jpg')).base64digest %>
      

      在fixtures/active_storage中:

      cafe_picture:
        name: photos
        record: coffee (Item)
        blob: cafe_picture_blob
      

      在灯具/文件中是咖啡的 jpg img

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多