mysql - 如何在 Rails 3.1.0 应用程序中访问多个数据库?

标签 mysql ruby-on-rails ruby ruby-on-rails-3.1

在我们的 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/

相关文章:

php - 使用 PHP 连接到 Amazon RDS

带参数的 MySQL LIMIT

ruby-on-rails - 每个用户的rails缓存

ruby-on-rails - form_for - 生成唯一的 id

ruby - 检查两个字符串是否匹配不区分大小写

mysql - 多个列中具有不同值的多个计数

php - 将 unix 时间戳从 php 文件存储到 mysql

ruby-on-rails - 如何在 Windows 上完全卸载 ruby​​ on rails(使用 RailsInstaller 安装)?

ruby-on-rails - 运算符不存在 : character varying[]

ruby - 删除超过 90 天的日志