Как работает прикрепление изображения к модели с помощью ActiveStorage и Cloudinary? Я пытался следовать этому методу ниже внутри моего файла UserType.rb.
class Hash < Types::BaseInputObject
argument :_parts, [String], required: false
end
argument :image, Hash, required: false
argument :image_name, String, required: false
decoded_image = Base64.decode64(image)
image_io = StringIO.new(decoded_image)
@user.image.attach(io: image, filename: 'test')
@user.save
Фотоагент от клиента выглядит примерно так:
"variables"=>{"image"=>{"_parts"=>[["image", {"image"=>"file:///Users/hugohouyez/Library/Developer/CoreSimulator/Devices/B25284C3-EE82-4DD3-AF6D-309F8CA7C608/data/Containers/Data/Application/C5AB683D-EAA5-482B-B52E-60D98B6753CE/Documents/images/79AD6A23-CDF9-451D-AC6B-ED3FE045336E.jpg"
Однако я не могузаставить это работать. Я получаю следующее сообщение об ошибке:
Ошибка: ошибка GraphQL: переменному изображению типа Hash было предоставлено недопустимое значение для _parts.0 (невозможно преобразовать значение ["image", "{\" image \"=> \" file: ...
На клиенте код выглядит так
const [createUser] = useMutation(CREATE_USER);
const createUserHook = ({image, image_name, first_name}) => {
let fileType = image[image.length - 1];
let formData = new FormData();
formData.append('image', {
image,
name: `photo.${fileType}`,
type: `image/${fileType}`,
});
return createUser({ variables: { image: formData, image_name: image_name, first_name: first_name }})
}
Любая помощь приветствуется, так как я не смог найти официальную документацию поэто.