diff --git a/callback_create.go b/callback_create.go index 56126268..c543baaa 100644 --- a/callback_create.go +++ b/callback_create.go @@ -76,7 +76,7 @@ func createCallback(scope *Scope) { } } else if field.UseEncoder { if enc, ok := scope.Value.(Encoder); ok { - if val, err := enc.EncodeField(scope, field.DBName); err == nil { + if val, err := enc.EncodeField(field.DBName); err == nil { columns = append(columns, scope.Quote(field.DBName)) placeholders = append(placeholders, scope.AddToVars(val)) } else { diff --git a/callback_update.go b/callback_update.go index 2d4c42a7..24732d6d 100644 --- a/callback_update.go +++ b/callback_update.go @@ -82,7 +82,7 @@ func updateCallback(scope *Scope) { } } else if field.UseEncoder { if enc, ok := scope.Value.(Encoder); ok { - if val, err := enc.EncodeField(scope, field.DBName); err == nil { + if val, err := enc.EncodeField(field.DBName); err == nil { sqls = append(sqls, fmt.Sprintf("%v = %v", scope.Quote(field.DBName), scope.AddToVars(val))) } else { scope.Err(err) diff --git a/encoder.go b/encoder.go index b2c77e49..7f4e2239 100644 --- a/encoder.go +++ b/encoder.go @@ -2,14 +2,13 @@ package gorm // Encoder is a value encoding interface for complex field types type Encoder interface { - EncodeField(*Scope, string) (interface{}, error) - DecodeField(scope *Scope, column string, value interface{}) error + EncodeField(column string) (interface{}, error) + DecodeField(column string, value interface{}) error } // decoder defers decoding until necessary type decoder struct { Encoder - scope *Scope column string value interface{} } @@ -17,7 +16,6 @@ type decoder struct { func newDecoder(encoder Encoder, scope *Scope, column string) *decoder { return &decoder{ encoder, - scope, column, nil, } @@ -31,5 +29,5 @@ func (d *decoder) Scan(src interface{}) error { // Decode handles the decoding at a later time func (d *decoder) Decode() error { - return d.DecodeField(d.scope, d.column, d.value) + return d.DecodeField(d.column, d.value) }