微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐