As of December 1st, 2019 Buffalo, and all related packages, require Go Modules and the use of the GOPATH is no longer supported.

Please see this blog post for more information


Pop provides a means to execute code before and after database operations. This is done by defining specific methods for your models.

For example, to hash a user password you may want to define the following method:

type User struct {
  ID       uuid.UUID
  Email    string
  Password string

func (u *User) BeforeCreate(tx *pop.Connection) error {
  hash, err := bcrypt.GenerateFromPassword([]byte(u.Password), bcrypt.DefaultCost)
  if err != nil {
    return errors.WithStack(err)

  u.Password = string(hash)

  return nil

In the above example, when the connection's Save method is called with a User, the BeforeCreate method will be called before writing to the database.

The available callbacks include:

Related Content

  • Models - Define a database model.