6

だから私はこれがこのように機能する方法を知っています

ActiveRecord::Base.connection_pool.with_connection do |conn|
   conn.execute(sql)
end

しかし、私は実際のActiverecordモデルとの接続を使用しようとしているので、

conn.Url.first

そのようなことをする方法はありますか?

4

1 に答える 1

12

これは不可能であることわかりましたが、with_connectionブロック内では、ActiveRecord呼び出しはRails接続プールからチェックアウトされた接続を使用する必要があります

したがって、この例では

ActiveRecord::Base.connection_pool.with_connection do |conn|
    Url.first
end

database.yml:pool設定でRails用に確保されたプールから接続をチェックアウトし、アクティブレコード呼び出しにそれを使用させてから、再度チェックインする必要があります。

ただし、これはRails3以降でのみ機能します...これを可能にするコード変更をここで確認できます

Rails 2.3(旧式)http://apidock.com/rails/v2.3.8/ActiveRecord/ConnectionAdapters/ConnectionPool/with_connection

Rails 3 http://apidock.com/rails/v3.0.0/ActiveRecord/ConnectionAdapters/ConnectionPool/with_connection

この男は、このブログ投稿 http://coderrr.wordpress.com/2009/05/05/activerecords-with_connection-is-now-useful/でパッチについて説明しています。

于 2012-05-13T01:54:06.303 に答える