英文:
How to add default value in gorm from another package
问题
我有一个定义如下的结构体:
type User struct {
Name string `gorm:"type:varchar(100);size:100;not null;default:null;" json:"name"`
UserTypeId uuid.UUID `sql:"type:uuid REFERENCES usertype(id);" gorm:"index;not null;default:null;" json:"user_type_id"`
Score int `gorm:"size:36;index;not null;default:null;" json:"score"`
}
现在我想在另一个包中使用一些常量,比如将defaultID
设置为'1234'
,而不是将null
作为UserTypeID
的默认值。我该如何在gorm的默认值中提及这个常量?我不想这样写:
UserTypeId sql:"type:uuid REFERENCES usertype(id);" gorm:"index;not null;default:1234;" json:"user_type_id"`
我希望能从一个定义好的常量中获取ID。
英文:
I have a struct defined as
type User struct {
Name string `gorm:"type:varchar(100);size:100;not null;default:null;" json:"name"`
UserTypeId uuid.UUID sql:"type:uuid REFERENCES usertype(id);" gorm:"index;not null;default:null;" json:"user_type_id"`
Score int gorm:"size:36;index;not null;default:null;" json:"score"`
}
Now i want to use some contant defined in another package lets say defaultID = '1234'instead of null as default in UserTypeID how do i mention this constant inside gorm default value also i dont want to put it like this
UserTypeId sql:"type:uuid REFERENCES usertype(id);" gorm:"index;not null;default:1234;" json:"user_type_id"`
Instead of directly mentioning the id i want to take it from a constant defined.
答案1
得分: 1
你可以使用BeforeSave
或BeforeUpdate
钩子来实现这个功能。例如:
func (u *User) BeforeSave(tx *gorm.DB) error {
//首先,检查UserTypeId的值
//其次,更新该值
u.UserTypeId = defaultID
}
英文:
You can achieve this with BeforeSave
or BeforeUpdate
hooks. For example:
func (u *User) BeforeSave(tx *gorm.DB) error {
//first, check the UserTypeId value
//second, update the value
u.UserTypeId = defaultID
}
答案2
得分: 0
结构标签无法从字符串常量中构建。这是设计如此。
然而,你可以使用反射包来实现这一点,但不建议这样做。
英文:
Struct tags can't be built from string constants. This is by design.
However, you can achieve this using reflect package but not recommended.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论