【发布时间】:2012-03-15 03:04:34
【问题描述】:
我正在写multi-tenancy gem for rails
我的测试现在为特定适配器建立连接,运行一些测试,然后为后续的数据库适配器重复。
然而,我的问题是当我打电话时:
ActiveRecord::Base.establish_connection
使用不同的适配器,从它生成的sql仍然是旧适配器的形式。例如,我运行 mysql 测试,然后尝试运行 postgresql 测试。我收到一个错误:
Failure/Error: subject.create(database1)
ActiveRecord::StatementInvalid:
PGError: ERROR: syntax error at or near "."
LINE 1: SELECT `users`.* FROM `users` WHERE `users`.`name` = 'Some ...
^
: SELECT `users`.* FROM `users` WHERE `users`.`name` = 'Some User 0' LIMIT 1
这里很明显,它使用的是 mysql 反斜杠语法,这在 postgresql 中是无效的。
那么...有人知道如何正确地与不同的适配器建立连接吗?我试过了:
ActiveRecord::Base.connection.reconnect!
ActiveRecord::Base.clear_all_connections!
这些都没有解决我的测试问题。非常感谢任何帮助。
【问题讨论】:
标签: ruby-on-rails activerecord multi-tenant