如何正确连接到远程数据库?
现在我有
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
时
在控制台中它返回我未初始化的常量团队
如何妥善处理?
答案 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
答案 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"
...