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

rails:401

From: yu1@t...
Date: Sun, 02 Oct 2005 13:29:10 +0900
Subject: [rails:401] Re: ActiveRecordで複数のデータベースに接続する方法

gorouです。

ActiveRecord(AR)の継承ではテーブル名も継承されますよ。

> 実際にはBarにはいろいろメソッドを記述したりすることもあるでしょう。なの
> で同じデータベースにアクセスするためだけにBarを継承するのは変です(よね? 
> こんな風に感じるの私だけかな)。変な上に害もあります。そこでクラスに中間
> 層(Foo)を設けて、
> 
>   class Foo < ActiveRecord::Base; end
>   class Bar < Foo; end
>   class Baz < Foo; end
>   Foo.establish_connection(:database => 'foo', ...)

この方法だとBarもBazもfoosテーブルを参照します。
変更したい場合は

class Bar < Foo
  self.table_name = 'barz'
end

とやるのが一番お手軽ですがスマートではありませんね。
そもそもテーブルのコネクション先変更だけのために継承するのは
AR的によろしくないと思います。

Foo Bar Bazはdb1に、Hoge Hugaはdb2に接続したいなら
AR::Baseを拡張するなりなんなりで
クラス名とDB接続先をマッピングする機能を盛り込むのが
良いのではないでしょうか。

--------------------------------------------
http://rails2u.com/
g0rOu <hotchpotch@g...>


--
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...           ]