code: func (c *Connection) ValidateAndCreate(model interface{}, excludeColumns ...string) (*validate.Errors, error) {
  	sm := &Model{Value: model}
  	verrs, err := sm.validateCreate(c)
  	if err != nil {
  		return verrs, err
  	}
  	if verrs.HasAny() {
  		return verrs, nil
  	}
  
  	if c.eager {
  		asos, err2 := associations.ForStruct(model, c.eagerFields...)
  
  		if err2 != nil {
  			return verrs, err2
  		}
  
  		if len(asos) == 0 {
  			c.disableEager()
  			return verrs, c.Create(model, excludeColumns...)
  		}
  
  		before := asos.AssociationsBeforeCreatable()
  		for index := range before {
  			i := before[index].BeforeInterface()
  			if i == nil {
  				continue
  			}
  
  			sm := &Model{Value: i}
  			verrs, err := sm.validateAndOnlyCreate(c)
  			if err != nil || verrs.HasAny() {
  				return verrs, err
  			}
  		}
  
  		after := asos.AssociationsAfterCreatable()
  		for index := range after {
  			i := after[index].AfterInterface()
  			if i == nil {
  				continue
  			}
  
  			sm := &Model{Value: i}
  			verrs, err := sm.validateAndOnlyCreate(c)
  			if err != nil || verrs.HasAny() {
  				return verrs, err
  			}
  		}
  
  		sm := &Model{Value: model}
  		verrs, err = sm.validateCreate(c)
  		if err != nil || verrs.HasAny() {
  			return verrs, err
  		}
  	}
  
  	return verrs, c.Create(model, excludeColumns...)
  }
docs: // ValidateAndCreate applies validation rules on the given entry, then creates it
  // if the validation succeed, excluding the given columns.