はじめに
GORMの論理削除の設定にちょっとクセがあることが分かりました。
やり方
GORMはdeleted_atカラムがあれば、自動で論理削除にすることが出来ます。
しかし、型の指定でtime.Timeにするとエラーが起きます。
修正前
type Presentation struct {
ID int `json:"id"`
Title string `json:"title"`
CreatedAt time.Time `json:"created_at"`
DeletedAt time.TIme `json:"deleted_at"`
}
上記のように、time.Time
型にしてしまうと、レコード作成時にデフォルトの値が入ってしまい、エラーが起きてしまいます。
修正後
type Presentation struct {
ID int `json:"id"`
Title string `json:"title"`
CreatedAt time.Time `json:"created_at"`
DeletedAt sql.NullTime `json:"deleted_at"`
}
上記の用に、sql.NullTime
にすれば、レコード作成時にもNULLが入って、エラーが防げます。
参考文献