I have some sort of virtual file system. List of folders, each folder contains files, and ACL. So structure looks like this:
type Model struct {
ID uint `gorm:"primary_key" json:"id"`
}
type User struct {
Model
Name string
}
type Folder struct {
Model
Name string
}
type File struct {
Model
Name string
FolderID uint
Folder Folder
Acl []User `json:"acl" gorm:"many2many:file_acl"`
}
It comes from frontend as full fledged JSON. It gets demarshalled. What happens next when I call Save(&file)
it correctly stores File, creates record inside file_acl
.
Also it updates Folder and Users.
Here comes my question - how to skip those dependent updates but retain autogenerated queries to update/insert into file_acl
table?
To prevent cascade updates you should use association_autoupdate
option.
Db.Set("gorm:association_autoupdate", false).Save(&file)
I think you might want db.Set("gorm:save_associations", false).Save(...)