1

我正在为 firebird rails 适配器开发补丁。我的目标是,如果列的域具有已定义的名称,则可以将列定义为布尔类型。

我在模块的方法中找到了SqlTypeMetadata我用来创建的类。 FirebirdColumnsfetch_type_metadataSchemaStatements

但似乎这仅在获取数据后使用,因此它不使用查询中定义的真/假值。所以,现在,我正在寻找一种方法来根据适配器告诉 ActiveRecord 列的类型。我多次阅读文件 schema_definitions 和 schema_statements 以防我遗漏了一些东西,但我在那里找不到方法......。

我可以覆盖以使类型转换正确的方法在哪里?

4

1 回答 1

1

Firebird 不会在准备好的查询的绑定信息中传达有关列域的信息。它只传达基本的底层数据类型信息。因此,如果您定义了一个X具有基础类型的域CHAR(1),那么 Firebird 会将其作为 a 进行通信CHAR(1),而不是作为X.

除了查询元数据表以获取更多信息外,没有其他选项可以获取域。因此,您想要实现的目标要么是不可能的,要么至少会很复杂。

于 2019-07-24T07:01:44.467 回答