我正在创建一个用户登录Oracle数据库并运行准备好的查询的应用程序。我想使用ActiveRecord帮助运行查询,但我遇到了一些问题。
当用户尝试登录时,我通过运行
来测试连接def test (username, password)
ActiveRecord::Base.establish_connection({
:adapter => 'oracle_enhanced',
:database => '//database:1521/test',
:username => username,
:password => password
})
end
但是,如果用户输入了错误的登录信息,我会收到以下错误:
OCIError
ORA-01017: invalid username/password; logon denied
在rails页面上。当我尝试重新加载登录页面时,它会一直显示该错误并且不显示实际的登录页面。删除此错误的唯一方法是重新启动整个rails应用程序。
这是因为我尝试建立与其他数据库的连接,但是它失败了,它不知道该怎么办?有什么办法可以防止这种情况发生吗?
答案 0 :(得分:2)
之前我也遇到过这个问题。要测试数据库连接,不应使用ActiveRecord :: Base,因为它会影响整个应用程序,但您应该创建一个抽象类。这是代码:
class DbConnectionTest < ActiveRecord::Base
@abstract_class = true
end
然后你只需使用自定义类:
DbConnectionTest.establish_connection({})