【问题标题】:establish_connection when accessing model or table访问模型或表时建立连接
【发布时间】:2014-05-13 10:10:16
【问题描述】:

我正在尝试连接到我的 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,但似乎找不到回调。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 activerecord activemodel


    【解决方案1】:

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

    # config/database.yml
    
    development:
     # first database configuration
    
    development_sec:
     # second database configuration
    

    然后在你的模型中使用这个:

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

    或者考虑使用像connection_ninja这样的宝石

    【讨论】:

    • 感谢您提供此手册。它的实现很简单,并且可以按我的意愿工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多