【问题标题】:rails, activerecord, get current connection specificationrails, activerecord, 获取当前连接规范
【发布时间】:2012-01-30 04:28:12
【问题描述】:

我正在编写代码,将一些数据从一个数据库迁移到另一个数据库,覆盖目标中的一些数据。它使用 ActiveRecord,因为它已经与使用 AR 的 Rails 应用程序相关联。

由于某些数据将被覆盖,我想提供一个确认提示,告诉用户用于目标数据库连接的实际连接字典/规范。你知道,适配器、主机、用户名、密码、数据库,你会在 database.yml 中列出的东西。

我可以为我正在写的东西获取模型并要求 SomeModel.connection.... 但是似乎根本没有 API 可以从实时连接对象中获取实际的连接规范。

真的吗?我错过了什么吗?任何其他想法,甚至是未记录的 api?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    类似于在模型上调用connection 的方式,您可以在ActiveRecord::Base 上调用connection

    ActiveRecord::Base.connection_config
    

    Look at the docs for ActiveRecord::Base,因为还有其他方法可以让您获取/设置有关连接的属性。

    【讨论】:

    • 是的,我知道该怎么做。它给了我与调用 someModel.connection 给我的大致相同类型的操作。我宁愿调用 someModel.connection,因为这样我知道我有 right 连接,以防应用程序为不同的模型使用不同的连接。但无论哪种情况,这都是我的问题,而不是答案——我看不出有办法从#connection 返回的对象中获取主机/端口/数据库/等。那是我的问题。我看过文档,是的。
    • 哈,好吧,虽然你没有回答我的问题,但你确实引导我回答了。我想我对 ActiveRecord::Base 的研究不够仔细,我专注于 ConnectionAdapter 等。 #connection_config 是我想要的,你可以在特定的模型上调用它,SomeModel.connection_config
    • 很高兴您能找到解决方案。当您说:“但似乎根本没有 API 可以从实时连接对象中获取实际的连接规范。”我将其解释为您想要获取连接统计信息而不在模型类上调用它。我会更新我的答案以反映正确的解决方案。
    • 是的。不过,调用 SpecificModel.connection_config 更安全,因为特定模型可能具有或不具有与 ActiveRecord::Base 超类相同的连接配置。 (默认情况下是这样,但它可能会有所不同)
    【解决方案2】:

    答案是 SomeModel.connection_config

    【讨论】:

    • 我更喜欢这个,因为它有点容易打字。 (y)
    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多