[前][次][番号順一覧][スレッド一覧]

rails:402

From: URA Takefumi <hage@p...>
Date: Mon, 3 Oct 2005 01:18:25 +0900 (JST)
Subject: [rails:402] Re: ActiveRecordで複数のデータベースに接続する方法

浦です。

たなかさん、あべさん、ありがとうございます。

tanaka wrote in <fbf9e4200510011824r6c95bb9i1cacfa2198147304@m...>

> module Foo
>   def connect_another_db
>     self.establish_connection(
>       ...
>     )
>   end
> end
> 
> class Bar  < ActiveRecord::Base
>  extend Foo
>   self.connect_another_db
> end
> 
> ならいけそうですが
> …ぜんぜんエレガントじゃないですね。

なるほど、ちょっと実験してみましたが確かにこの方法ですとうまく別々のデー
タベースに接続できています。これを元にもうちょっとエレガントかなという形
に書き直してみました。

module ActiveRecord
  class Base
    def self.set_connector(connector)
      self.extend connector
      self.connect_other
    end # def
  end # class
end # module

module Foo
  def connect_other
    self.establish_connection(:database => 'foo', ...)
  end # def
end # module

class Bar < ActiveRecord::Base
  set_connector Foo
end # class

たなかさんの変形で、set_connectorで宣言ぽいことをしてる形です。

ただこれの問題点はset_connectorが呼ばれるたびに接続が増えていく(ようだ)
というところでしょう。これ以上はActiveRecordのコードを読むべきでしょうか。
というかちょっと読んでみたんですがかなり難しいっす。

--
浦 岳史 (うら たけふみ)
    mailto:hage@p...


--
ML: rails@r...
使い方: http://QuickML.com/
Web Site: http://wiki.fdiary.net/rails/
ML Archives: http://www.fdiary.net/ml/rails/

[前][次][番号順一覧][スレッド一覧]

       395 2005-10-02 00:56 [hage@p...           ] ActiveRecordで複数のデータベースに接続する方法
       396 2005-10-02 01:32 ┣[drawn.boy@g...      ]                                       
       397 2005-10-02 01:42 ┃┗[drawn.boy@g...      ]                                     
       398 2005-10-02 02:03 ┣[abe@c...            ]                                       
       399 2005-10-02 02:05 ┃┗[abe@c...            ]                                     
       400 2005-10-02 03:24 ┃ ┗[drawn.boy@g...      ]                                   
->     402 2005-10-02 18:18 ┃  ┗[hage@p...           ]                                 
       401 2005-10-02 06:29 ┗[yu1@t...            ]                                       
       403 2005-10-02 18:25  ┗[hage@p...           ]