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

您可能希望进行实际的错误处理,并可能在实例方法之外的某处建立连接,但这取决于您自己决定.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...