go-gorm / gorm

The fantastic ORM library for Golang, aims to be developer friendly
https://gorm.io
MIT License
36.48k stars 3.9k forks source link

Updating struct value in BeforeUpdate() does not use new value in query #6774

Open rverdile opened 8 months ago

rverdile commented 8 months ago

GORM Playground Link

https://github.com/go-gorm/playground/pull/678

Description

I would like to be able to use BeforeUpdate() to modify a column value, before updating. For example, I may want to trim any whitespace on the value before updating it in the database. The functionality is possible with the BeforeCreate() hook, but it does not seem to be possible with the BeforeUpdate() hook.

in my code example, you can see I create a user " jinzhu ". In the BeforeCreate() method, I trim the whitespace and update the value, and the query uses the updated value.

In my code example, I update the user to the name " tux ". In the BeforeUpdate() method, I trim the whitespace and update the value, but the actual update query still uses the original value. I would expect it to use the updated value.

rverdile commented 8 months ago

It's easy enough to work around this by trimming whitespace the Update() call instead, but this seemed like a bug.