mirror of https://github.com/go-gorm/gorm.git
Test update association with non-updatable
This commit is contained in:
parent
e81833fd11
commit
74746211b8
|
@ -1,6 +1,7 @@
|
||||||
package tests_test
|
package tests_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"database/sql"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -85,4 +86,48 @@ func TestUpdateHasOne(t *testing.T) {
|
||||||
DB.Preload("Toy").Find(&pet4, "id = ?", pet.ID)
|
DB.Preload("Toy").Find(&pet4, "id = ?", pet.ID)
|
||||||
CheckPet(t, pet4, pet)
|
CheckPet(t, pet4, pet)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("Restriction", func(t *testing.T) {
|
||||||
|
type CustomizeAccount struct {
|
||||||
|
gorm.Model
|
||||||
|
UserID sql.NullInt64
|
||||||
|
Number string `gorm:"<-:create"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CustomizeUser struct {
|
||||||
|
gorm.Model
|
||||||
|
Name string
|
||||||
|
Account CustomizeAccount `gorm:"foreignkey:UserID"`
|
||||||
|
}
|
||||||
|
|
||||||
|
DB.Migrator().DropTable(&CustomizeUser{})
|
||||||
|
DB.Migrator().DropTable(&CustomizeAccount{})
|
||||||
|
|
||||||
|
if err := DB.AutoMigrate(&CustomizeUser{}); err != nil {
|
||||||
|
t.Fatalf("failed to migrate, got error: %v", err)
|
||||||
|
}
|
||||||
|
if err := DB.AutoMigrate(&CustomizeAccount{}); err != nil {
|
||||||
|
t.Fatalf("failed to migrate, got error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
number := "number-has-one-associations"
|
||||||
|
cusUser := CustomizeUser{
|
||||||
|
Name: "update-has-one-associations",
|
||||||
|
Account: CustomizeAccount{
|
||||||
|
Number: number,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := DB.Create(&cusUser).Error; err != nil {
|
||||||
|
t.Fatalf("errors happened when create: %v", err)
|
||||||
|
}
|
||||||
|
cusUser.Account.Number += "-update"
|
||||||
|
if err := DB.Session(&gorm.Session{FullSaveAssociations: true}).Updates(&cusUser).Error; err != nil {
|
||||||
|
t.Fatalf("errors happened when create: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var account2 CustomizeAccount
|
||||||
|
DB.Find(&account2, "user_id = ?", cusUser.ID)
|
||||||
|
AssertEqual(t, account2.Number, number)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue