我试图在我的Rails应用程序中连接到2个数据库。
我在我的RoR应用程序中创建了2个模型,用于2个不同数据库的2个表。
我知道在使用以下方法访问表之前如何连接到其他数据库:
ActiveRecord::Base.establish_connection()
但我想要完成的是每次调用该模型/表时自动设置与正确数据库的连接,因为我需要拥有不同的数据库。
就像Rails控制器上的before_filter一样,我如何让我的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 :: Callbacks,但我似乎无法找到回调。
答案 0 :(得分:1)
所有模型都继承自ActiveRecord :: Base。因此,直接在模型中提供了establish_connection。
# config/database.yml
development:
# first database configuration
development_sec:
# second database configuration
然后在你的模型中使用:
class MyModel < ActiveRecord::Base
establish_connection "#{Rails.env}_sec"
end
或者考虑使用像connection_ninja
这样的宝石