如何在Gorm中正确执行部分更新?

时间:2018-01-16 03:28:45

标签: go go-gorm

我有某种虚拟文件系统。文件夹列表,每个文件夹包含文件和ACL。 所以结构看起来像这样:

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"`
} 

它来自前端作为完全成熟的JSON。它被解构了。 当我调用Save(&file)它正确存储文件时,接下来会发生什么,在file_acl内创建记录。

它还会更新文件夹和用户。

这是我的问题 - 如何跳过这些依赖更新,但保留自动生成的查询以更新/插入file_acl表?

2 个答案:

答案 0 :(得分:0)

我想你可能想要db.Set("gorm:save_associations", false).Save(...)

答案 1 :(得分:0)

要防止级联更新,您应使用association_autoupdate选项。

Db.Set("gorm:association_autoupdate", false).Save(&file)