【问题标题】:Rails Active_storage ActiveStorage::IntegrityError on testRails Active_storage ActiveStorage::IntegrityError 测试
【发布时间】:2019-04-15 00:06:42
【问题描述】:

在 Rails 5.2 上,我将画布保存为 blob,并通过 Active storage 将其发送到 azur 存储。

在我的机器上,使用开发环境,png 被完美地创建并完美地发送到 azur blob,然后我将它附加到模型上。

但是在测试机器(带有测试环境)上,当我将 blob 附加到图像时,我得到一个 ActiveStorage::IntegrityError。

发送 png 的 javascript

            var project_id = 2;
            var csrf_token  = $("meta[name=csrf-token]").attr("content");
            var project_metadata = new FormData();
            project_metadata.append("utf8","✓");
            project_metadata.append("authenticity_token",csrf_token);
            project_metadata.append("projet_id",project_id.toString());
            project_metadata.append("commit","Create Projet");
            var file_name = "rdc.png";
            var upload_file_field = that.drawing.getElement().toBlob(function(blob) {
                var file = new File([blob], file_name, {type: "image/png", lastModified: Date.now()});
                var url = "/projects/"+project_id.toString()+"/store_plan"
                project_metadata.append("images",file,file_name);   
                $.ajax({
                  type: "POST",
                  url: url,
                  data: project_metadata,
                processData: false,
                contentType: false,                   
                  success: function(){
                    console.log("images save");
                  }
                });
            })

控制器

def store_plan
  @project.images.attach(io: params["images"].to_io, filename: params["images"].original_filename)
end

storage.yml

azure_dev:
   service: AzureStorage
   storage_account_name: "XXXXX"
   storage_access_key: "..."
   container: projectsdevelopment

test:
   service: AzureStorage
   storage_account_name: "XXXXX"
   storage_access_key: "..."
   container: projectstest

我的开发机器是 mac book pro,我的测试机器是 Ubuntu。

不明白为什么我在测试中得到一个 ActiveStorage::IntegrityError 而在开发中一切正常?

感谢您的帮助。

【问题讨论】:

  • 我不知道这是否相关,但是在尝试将一堆虚拟文件批量上传到记录时,我遇到了类似的问题。我最终只是打电话给rescue 来摆脱错误。不理想,但我的所有文件都已成功附加,所以我认为如果你可以发送一个最小的测试 repo,也许值得在 GH 上发布一个问题。

标签: ruby-on-rails rails-activestorage


【解决方案1】:

解决方案

我终于用fetch 代替$.ajax({}) 了,这对双方都有效。

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2020-04-04
    • 2018-11-19
    相关资源
    最近更新 更多