🗂

[GORM] DefaultTableNameHandlerとTableName()を併用すると?

2021/09/23に公開

DefaultTableNameHandler

デフォルトのデーブル名を変更する1つ目の方法としてDefaultTableNameHandlerがあります。使い方は以下。

gorm.DefaultTableNameHandler = func (db *gorm.DB, defaultTableName string) string  {
  return "prefix_" + defaultTableName;
}

TableName()

また対象のstructにTableNameというテーブル名を返すメソッドを追加するとデフォルトのデーブル名を変更できます。

type User struct {} // デフォルトのテーブル名は `users`

// Userのテーブル名を`profiles`にする
func (User) TableName() string {
  return "profiles"
}

併用すると?

DefaultTableNameHandlerとTableName()を2つとも用いるとTableName()が勝ちます。ですので、prefixなどを付けたい場合はTableNameで設定したらいいみたいです。

Discussion