在我们的 Rails 3.1.0 应用程序中,我们希望根据用户凭证访问多个数据库。有多种解决方案。一种是为每个用户安装一个应用程序,每个应用程序只访问一个数据库。问题是,如果有很多数据库(例如数百个),那么应用安装的数量就会相等。维护大量应用程序可能很麻烦。另一种方法是在应用程序中访问多个数据库。然而,rails 3.1.0 似乎不支持这种方法。当然,应用程序中会有一个代码来决定刚刚登录的用户访问哪个数据库。有人可以提供有关该方法优缺点的解决方案和见解吗?非常感谢。
最佳答案
您应该能够使用 ActiveRecord::Base.establish_connection
在特定上下文中动态连接到您喜欢的任何数据库。如何实现它完全是特定于应用程序的,但 Rails 确实具有此功能。
这是一个非常人为的例子:
class User
def books
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "localhost",
:username => self.username,
:password => self.password,
:database => self.database
)
Book.all
rescue Exception => e
# ...
end
end
您可能想要进行实际的错误处理并可能在实例方法之外的某处建立连接,但这由您决定。
关于mysql - 如何在 Rails 3.1.0 应用程序中访问多个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012403/