【问题标题】:Rails with two different DatabasesRails 有两个不同的数据库
【发布时间】:2013-06-14 14:14:20
【问题描述】:

我为我的 Rails 应用程序使用了两个不同的数据库:MongoDBMsSQL 分别使用 Mongoidactiverecord-sqlserver-adapter 适配器。一切都很好,但是生成模型时出现了问题。

问题是“如何生成与MongoDBMsSQL 相关的模型?”

例如:我想生成与MongoIDAnimal 模型相关的People 模型与MsSQL。当我使用命令生成时:rails g model Animal name:string 它会生成与 mongoid 相关的模型。如何使用 ActiveRecord 生成与 MsSQL 相关的模型 Animal。
请帮帮我。 谢谢

【问题讨论】:

    标签: ruby-on-rails sql-server mongodb mongoid tiny-tds


    【解决方案1】:

    基于Using Active Record generators after Mongoid installation? 我相信这应该可行:

    rails g active_record:model Animal name:string
    

    【讨论】:

    • 它说:找不到生成器 activerecord:model。
    • 抱歉,打错了:'rails g active_record:model Animal name:string' 应该可以工作
    【解决方案2】:

    首先让我检查一下我是否正确理解了您的问题:

    您有 2 个数据库和一系列模型/迁移,并且您想要一种方法来告诉 rails 在运行迁移和使用您的模型访问数据库时使用哪个数据库?

    如果我在正确的区域,那么您需要在迁移中添加一个方法,该方法会覆盖 ActiveRecord::Migration 中的默认 connection() 方法。

    def connection
      ActiveRecord::Base.establish_connection(:conn_name).connection
    end
    

    :conn_name 是您在 config/database.yml 中为连接设置命名的名称

    在您的模型中添加该行

    establish_connection :conn_name
    

    到模型文件的顶部,模型现在将知道要连接到哪个数据库。

    【讨论】:

      【解决方案3】:

      因此,我过去处理此问题的快速而肮脏的方式(由于我的开发团队出于遗留原因将 mongoid 保留在 gem 文件中)是在必须执行迁移时注释掉 mongoid 运行捆绑包,生成并运行迁移,然后取消注释并再次运行捆绑。这远非最佳做法,但应该可行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        相关资源
        最近更新 更多