mysql – 如何访问rails 3.1.0 app中的多个数据库?
作者:互联网
在我们的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,ruby-on-rails,ruby,ruby-on-rails-3-1 来源: https://codeday.me/bug/20190609/1207923.html