Ruby on rails 访问模型或表时建立_连接

Ruby on rails 访问模型或表时建立_连接,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,activemodel,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Activemodel,我正在尝试连接Rails应用程序中的两个数据库 我在RoR应用程序中创建了2个模型,用于2个不同数据库上的2个表 在访问表之前,我知道如何使用以下方法连接到其他数据库: ActiveRecord::Base.establish_connection() 但我试图实现的是,每次调用该模型/表时自动设置到正确数据库的连接,因为我需要有不同的数据库 就像Rails控制器上的before_过滤器一样,我如何让我的Rails应用程序运行一个方法来建立如下连接: def set_database

我正在尝试连接Rails应用程序中的两个数据库

我在RoR应用程序中创建了2个模型,用于2个不同数据库上的2个表

在访问表之前,我知道如何使用以下方法连接到其他数据库:

ActiveRecord::Base.establish_connection() 
但我试图实现的是,每次调用该模型/表时自动设置到正确数据库的连接,因为我需要有不同的数据库

就像Rails控制器上的before_过滤器一样,我如何让我的Rails应用程序运行一个方法来建立如下连接:

 def set_database 
      ActiveRecord::Base.establish_connection({ :adapter => 'nuodb',:database => 'test_db',:host => 'localhost',:username => 'test_username',:password => 'test_password', :schema  => 'TEST_SCHEMA'})
    end
我希望每次调用模型时都运行此方法


我一直在查看ActiveModel::回调,但似乎找不到用于此的回调。

您的所有模型都继承自ActiveRecord::Base。因此,在模型中可以直接使用建立_连接

# config/database.yml

development:
 # first database configuration

development_sec:
 # second database configuration
然后在您的模型中使用以下内容:

class MyModel < ActiveRecord::Base
 establish_connection "#{Rails.env}_sec"
end
classmymodel

或考虑使用宝石般的

谢谢你这个MAU。它的实现非常简单,而且工作起来就像我希望的那样。