code: func (m *Model) TableName() string {
  	if s, ok := m.Value.(string); ok {
  		return s
  	}
  	if n, ok := m.Value.(TableNameAble); ok {
  		return n.TableName()
  	}
  
  	if m.tableName != "" {
  		return m.tableName
  	}
  
  	t := reflect.TypeOf(m.Value)
  	name := m.typeName(t)
  
  	defer tableMapMu.Unlock()
  	tableMapMu.Lock()
  
  	if tableMap[name] == "" {
  		m.tableName = nflect.Tableize(name)
  		tableMap[name] = m.tableName
  	}
  	return tableMap[name]
  }
docs: // TableName returns the corresponding name of the underlying database table
  // for a given `Model`. See also `TableNameAble` to change the default name of the table.