【发布时间】:2019-11-01 08:27:45
【问题描述】:
在updates 上,gorm 不会将布尔类型更新为false。默认情况下它会更新为true,但是当我尝试更新为false 时不会改变。我也没有看到任何错误。可能是什么问题?
type Attendee struct {
ID uint `gorm:"primary_key" gorm:"AUTO_INCREMENT" json:"id,omitempty" mapstructure:"id" csv:"ID"`
Email string `json:"email,omitempty" mapstructure:"email" csv:"Email,required"`
ShowDirectory bool `json:"show_directory,omitempty" gorm:"default:true" mapstructure:"show_directory" csv:"-"`
}
var attendee Attendee
// JSON.unmarshal lines here for the &attendee
if err := service.DB.Model(&attendee).Updates(Attendee{
Email: attendee.Email,
ShowDirectory: false
}).Error; err != nil {
return Attendee{}, err
}
替代解决方案:
这可行,但我正在更新多个属性。所以,我不能用这个。
att := Attendee{ID: 1}
service.DB.Model(&att).Update("ShowDirectory", false)
【问题讨论】:
-
使用 structs 时的记录和 预期 行为,您可以为受这种奇怪 (IMO) 设计决策影响的属性使用映射. gorm.io/docs/update.html#Update-Changed-Fields(注意 cmets)
-
@mkopriva 哦,谢谢,刚刚注意到。它说
false are blank values of their types结构使用