Gorm(Golang)和具有“单表继承”类型的数据库

时间:2019-04-25 16:12:28

标签: go go-gorm

我正在尝试使用Go从已经存在的Rails应用程序中的数据库中读取数据。一些模型和表因此通过type列使用单个表继承。在Rails / ActiveRecord中,此列的存在将创建到适当模型的自动映射。如果表是animals,而typeDog,它将映射到Dog类;如果是Cat,它将映射到Cat类。我想在Gorm中设置类似的内容。

由于Gorm似乎没有为模型提供default_scope选项,因此我使用了新的回调。

func scopedSearch(scope *gorm.Scope) {
    tablename := scope.TableName()
    switch tablename {
    case "table_using_sti":
        scope.Search.Where("type = ?", "MyModelName")
    default:
        return
    }
}

然后我在main函数中注册回调:

db.Callback().Query().Before("gorm:query").Register("my_plugin:before_query", scopedSearch)

当我使用db.First搜索实例或使用db.Model(&MyModel{}).Where(...)搜索模型时,它似乎正在工作。这是正确的处理方式吗?所有查询方法都将遵守该范围吗?还是更直接或更彻底的东西?

0 个答案:

没有答案