轨道中的多个DB连接

时间:2011-09-14 14:22:53

标签: mysql ruby-on-rails database ruby-on-rails-3

我正在尝试连接ROR应用程序中的多个数据库。我的database.yml看起来像这样  在您的database.yml文件中

发展:

 adapter: mysql
 username: root
 password: 
 database: example_development

私人:

adapter: mysql
username: root
password: 
database: example_private_development

可以使用establish_connection:private

进行连接

我怀疑是如何使用rake db:create。我无法从谷歌获得解决方案。

请帮我清除它。

3 个答案:

答案 0 :(得分:6)

尝试

rake db:create:all

是的,在Rails应用程序中可以有多个数据库连接。

这就是我曾经做过的,我创建了两个继承自ActiveRecord::Base的类,并设置了这些类中的连接。

然后我在其中一个类中继承了我的所有模型而不是直接ActiveRecord

以下是一个例子:

database.yml file

#app uses two database
#1 - test1
#2 - test2
test1:
  adapter: mysql
  encoding: utf8
  database: test1
  username: root 
  password: xxx
  host: localhost

test2:
  adapter: mysql
  encoding: utf8
  database: test2
  username: root
  password: xxx
  host: localhost

然后我有两个test1和test2数据库的模型:

class Test1Base < ActiveRecord::Base
    self.abstract_class = true
    establish_connection("test1")
end

class Test2Base < ActiveRecord::Base
  # No corresponding table in the DB.
  self.abstract_class = true
  establish_connection("test2")
end

然后我根据数据库继承我的模型:

class School < Test1Base
  #code
end

class Student < Test2Base
  #code
end

答案 1 :(得分:2)

感谢您的回复。

我们可以迁移特定数据库的模型,例如

db:migrate RAILS_ENV="portal_development"'

与DB建立连接的更多更改。检查下面更正的

class Test1Base < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :development
end

class Test2Base < ActiveRecord::Base
  # No corresponding table in the DB.
  self.abstract_class = true
  establish_connection :portal_development
end

感谢你们的回复。

欢呼声

Shamith c

答案 2 :(得分:0)

可能使用active_delegatehttp://railslodge.com/plugins/595-active-delegate