私は次のモデルを持っています...
type User struct {
ID string `sql:"type:uuid;primary_key;default:uuid_generate_v4()"`
FirstName string `form:"first_name" json:"first_name,omitempty"`
LastName string `form:"last_name" json:"last_name,omitempty"`
Password string `form:"password" json:"password" bindind:"required"`
Email string `gorm:"type:varchar(110);unique_index" form:"email" json:"email,omitempty" binding:"required"`
Location string `form:"location" json:"location,omitempty"`
Avatar string `form:"avatar" json:"avatar,omitempty"`
BgImg string `form:"bg_img" json:"bg_img,omitempty"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt time.Time
}
私はいくつかの異なる方法を試しましたが、この方法では(pq: relation "users" does not exist)
がスローされます。関連するモデルはありません。文字通り、その1つのモデルだけです。
使ってみました...
func (user *User) BeforeCreate(scope *gorm.Scope) error {
scope.SetColumn("ID", uuid.NewV4())
return nil
}
Uuid libと一緒に、しかしそれでも運がなかった。
UUIDを間違ったタイプとして保存しようとしていたことが判明しました...
func (user *User) BeforeCreate(scope *gorm.Scope) error {
scope.SetColumn("ID", uuid.NewV4())
return nil
}
必要なとき...
func (user *User) BeforeCreate(scope *gorm.Scope) error {
scope.SetColumn("ID", uuid.NewV4().String())
return nil
}
go get github.com/jinzhu/gorm
go get github.com/satori/go.uuid
次のように、gorm.Model
の代わりに独自のモデルベースモデルを作成してみてください。
type Base struct {
ID string `sql:"type:uuid;primary_key;default:uuid_generate_v4()"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"update_at"`
DeletedAt *time.Time `sql:"index" json:"deleted_at"`
}
次に、次のように、レコードを作成する前に呼び出されるメソッドを使用して、このフィールドにデータを入力します。
func (base *Base) BeforeCreate(scope *gorm.Scope) error {
uuid, err := uuid.NewV4().String()
if err != nil {
return err
}
return scope.SetColumn("ID", uuid)
}
したがって、特定のケースでは、次のようになります。
type User struct {
Base
FirstName string `form:"first_name" json:"first_name,omitempty"`
LastName string `form:"last_name" json:"last_name,omitempty"`
Password string `form:"password" json:"password" bindind:"required"`
Email string `gorm:"type:varchar(110);unique_index" form:"email" json:"email,omitempty" binding:"required"`
Location string `form:"location" json:"location,omitempty"`
Avatar string `form:"avatar" json:"avatar,omitempty"`
BgImg string `form:"bg_img" json:"bg_img,omitempty"`
}
これについての詳細は見つけることができます ここ
エラー (pq: relation "users" does not exist)
は通常、tableusers
がデータベースに存在しないことを意味します。 2つのモデル間の関係とは何の関係もありません。
したがって、基本的には、最初にデータベースにテーブルを作成する必要があります(または、@ Apinが提案するようにデータベースを自動移行します)。そして、同じコードを再実行してみてください。