【发布时间】:2012-05-14 15:12:58
【问题描述】:
我正在使用开源数据库。我正在尝试使用 DataMapper 将其映射到类,稍后我将更改模型驱动的近似值,而不是数据库驱动的近似值。
但首先我想以精确的方式映射开源数据库。该数据库是 PostgreSQL 数据库,在某些表中有些字段的类型为 character。
如何在 DataMapper 中映射 character 类型?此类型不在其primitive types 中,也不在dm-types 中,也不在dm-types-legacy 中。
如果它提供更多信息,实际上我不是手动编写模型,而是使用dm-is-reflective,它会自动映射现有的数据库表。它给了我以下错误:
/var/lib/gems/1.9.1/gems/dm-is-reflective-1.0.0/lib/dm-is-reflective/is/adapters/data_objects_adapter.rb:141:in `reflective_lookup_primitive': bpchar not found for DataMapper::Adapters::PostgresAdapter (TypeError)
编辑
这是dm-is-reflective 的问题,而不是datamapper 核心,它可以很好地与char 类型一起作为具有长度设置的String 类型。我回答问题的解决方案。
【问题讨论】:
-
您可以将这些字段更改为
varchar或(更好)text吗?在 PostgreSQL 中,char通常是数据类型的错误选择。支持它是因为它在标准中,但最好避免使用它。 -
感谢您的回答@kgrittn。但正如我所说,我想映射到原始且完整的数据库,并从那里以模型为基础进行更改...
-
我猜你需要找到一个能处理这种古老数据类型的 gem。
标签: ruby ruby-on-rails-3 postgresql orm ruby-datamapper