Rails连接到远程数据库

时间:2015-11-27 11:41:13

标签: mysql ruby-on-rails

如何正确连接到远程数据库?

现在我有

  def db_params
    {:adapter => "mysql2",
     :host => "host",
     :username => "name",
     :password => "pass",
     :database => "mydb"}
  end



 def connect_to_remote_db
    ActiveRecord::Base.establish_connection(db_params)
  end

当我写connect_to_remote_db时似乎没问题

我知道远程数据库有表'Team'

但是当我写Team时  在控制台中它返回我未初始化的常量团队

如何妥善处理?

2 个答案:

答案 0 :(得分:1)

当您拨打Team ActiveRecord时,会查找主要连接,因此会出错。

你可以在课堂上把它包起来。

由于我处理过类似情况,您可以在database.yml本身使用该连接并使用。

development:
  adapter: mysql2
  other stuff...

db_2:
  adapter: mysql2
  other stuff..

然后创建一个类

class Team < ActiveRecord::Base
  establish_connection(:db_2)
  self.table_name = "teams"
end

来自 - https://stackoverflow.com/a/26574386/2231236

答案 1 :(得分:0)

您需要在应用程序(该远程数据库表)中创建模型并建立连接。例如:

<强> team.rb

class Team< ActiveRecord::Base
  establish_connection "remote_db"
end

如果您要从该远程数据库中使用多个表,则可以创建模块并将其包含在远程数据库表的每个模型中。 模块示例:

module RemoteConnection
  extend ActiveSupport::Concern
  included do
    establish_connection "remote_db"
  end
end

而不是

class Team< ActiveRecord::Base
  include RemoteConnection
end

使用 database.yml 文件存储连接:

...
remote_db:
  :adapter => "mysql2",
  :host => "host",
  :username => "name",
  :password => "pass",
  :database => "mydb"
...