Rails Active_storage ActiveStorage :: IntegrityError в тесте - PullRequest
0 голосов
/ 12 ноября 2018

На рельсах 5.2 я сохраняю холст в виде BLOB-объекта и отправляю его в хранилище Azur через Активное хранилище.

На моей машине, с помощью среды разработки, png создан идеально и отлично отправляется в BLOB-объект Azur, и я прикрепляю его к модели.

Но на тестовой машине (с тестовой средой) я получаю ActiveStorage :: IntegrityError, когда я присоединяю BLOB-объект к изображению.

JavaScript, который отправляет PNG

            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

The 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

Моя машина разработки - это MacBook Pro, моя машина тестирования - Ubuntu.

Ну, не понимаю, почему я получаю ActiveStorage :: IntegrityError в тесте, и все в порядке на стадии разработки?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 22 февраля 2019

РЕШЕНИЕ

Я наконец-то использую fetch вместо $.ajax({}), и он работает с обеих сторон.

...