рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
type BufferType string
const (
Console BufferType = "console"
Channel BufferType = "channel"
Conversation BufferType = "conversation"
)
type Buffer struct {
Bid int64 `gorm:"primary_key:yes"`
Type BufferType `sql:"not null;type:ENUM('console', 'channel', 'conversation')"`
Name string `sql:"size:255;not null"`
}
рдЬрдм рдореИрдВ db.Save (рдмрдлрд░) рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реВрдБ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
sql: converting Exec argument #1's type: unsupported type BufferType, a string)
рдХреНрдпрд╛ рдпрд╣ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдмрдлрд╝рд░ рдЯрд╛рдЗрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдФрд░ рд╕рд╣реЗрдЬреЗрдВ? рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ db.Find () рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдХрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ
рдХреБрдЫ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдпрд╣ рддреНрд░реБрдЯрд┐ рдЧреЛрд▓рд╛рдВрдЧ рдбреЗрдЯрд╛рдмреЗрд╕/рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдЖ рд░рд╣реА рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рдореБрдЭреЗ рдмрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.(string)); return nil }
func (u BufferType) Value() (driver.Value, error) { return string(u), nil }
рдпрд╣ рдереЛрдбрд╝рд╛ рдХреНрд▓рд┐рдВрдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рдЬрд╛рдВрдЪ рднреА рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред
рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред @bramp рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдЕрднреА рднреА рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рджреА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.([]byte)); return nil }
func (u BufferType) Value() (driver.Value, error) { return string(u), nil }
рдЕрдВрддрд░ []byte
рдмрдЬрд╛рдп string
ред рдЗрд╕ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдереНрд░реЗрдб рдиреЗ рдореЗрд░реА рдорджрдж рдХреА: http://stackoverflow.com/a/20582504/2418739
+1 рдмрдврд╝рд┐рдпрд╛ рд╕рдорд╛рдзрд╛рдиред рдХрд╛рд╢ рдпрд╣ GORM рдбреЙрдХреНрд╕ рдореЗрдВ рд╣реЛрддрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред @bramp рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдЕрднреА рднреА рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рджреА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
рдЕрдВрддрд░
[]byte
рдмрдЬрд╛рдпstring
ред рдЗрд╕ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдереНрд░реЗрдб рдиреЗ рдореЗрд░реА рдорджрдж рдХреА: http://stackoverflow.com/a/20582504/2418739