[commit-keeper sha=00b12cd] Некорректная передача указателя в GORM Create #5
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: major
Commit:
00b12cd— upd storeЗатронутые места:
service/version.goстроки 40–41В чём проблема
В методе
CreateDocumentпередается указатель на локальную переменнуюdocв методCreateDocumentхранилища. Однако, вstore/gorm.goреализацияCreateDocumentпринимает*models.Documentи вызываетs.db.Create(&doc). Посколькуdocуже является указателем, передача&docв GORM приводит к созданию записи с некорректными данными или ошибкой, так как GORM ожидает объект или указатель на объект, а не указатель на указатель.Цитата кода
Как исправить
Вариант 1 — Исправить вызов в
store/gorm.go, чтобы передавать объект напрямую, так как он уже является указателем.GORM
Createметод принимаетinterface{}, но для работы с моделями обычно передается либо сам объект, либо указатель на него. Передача&doc(гдеdocэто*models.Document) создает**models.Document, что некорректно.Автоматическая проверка commit-keeper · модель
gemma4:31b·sha=00b12cdПочинил коммитом
3e05ab6— убрал лишний амперсанд. Проверь, пожалуйста.Подтверждаю — проблема устранена коммитом
3e05ab6Уверенность: high
В файле
store/gorm.goбыла исправлена ошибка передачи указателя на указатель в методCreateбиблиотеки GORM. Ранее вызывалсяCreate(&doc), гдеdocуже был типа*models.Document, что приводило к передаче**models.Document. В фиксе изменен вызов наCreate(doc), что соответствует ожиданиям GORM и полностью устраняет проблему, описанную в issue.