新手问题 如何创建自定义的 database adapter

zjude90 · 2015年06月30日 · 最后由 pengedy 回复于 2015年06月30日 · 2044 次阅读

我还是 Ror 小白,跟着 教程摸索中 ,一上来就要 自定义一个 ActiveRecord adapter ,实在超出能力范围了。

是这样子的。我需要连接到一个定制版的 pg 数据库,但是这个数据库的某些系统表名字被 改了,pg_ 被替换成了别的字符串。 所以 ActiveRecord 连接的时候就报错了:

PG::UndefinedTable: ERROR:  relation "pg_type" does not exist
LINE 2:               FROM pg_type as t
                           ^
:               SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
              FROM pg_type as t
              LEFT JOIN pg_range as r ON oid = rngtypid

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "pg_type" does not exist
LINE 2:               FROM pg_type as t
                           ^
:               SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
              FROM pg_type as t
              LEFT JOIN pg_range as r ON oid = rngtypid

数据库因为某些原因是没法换的 (否则我就用 pg 了), 如果还想用 ORM, 就必须把 adapter 换掉了. 我现在找到了 activerecord 里面的 connection_adapter 目录,但 不知道 怎么才能创建一个 新的 Adapter ,以及怎么注册到 activeRecord 里面。

有一个方法,你 fork 一份 pg 的 adapter gem,然后自己改了推在自己的 Github 上。 在项目的 Gemfile 里写好 gem 的地址就可以了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号