rails:395
From: URA Takefumi <hage@p...>
Date: Sun, 2 Oct 2005 07:56:46 +0900 (JST)
Subject: [rails:395] ActiveRecordで複数のデータベースに接続する方法
浦といいます。 ActiveRecordでいろいろ遊んでみています。データベースはPostgreSQLを使って ます。 ActiveRecordで複数のデータベースに接続する方法がマニュアルに載ってます。 http://ar.rubyonrails.com/classes/ActiveRecord/Base.html の「Connection to multiple databases in different models」の記述です。 ここに書かれてるのは以下のような感じでやればいいということです(Barだけ fooというデータベースに接続したいということです)。 class Bar < ActiveRecord::Base; end Bar.establish_connection(:database => 'foo', ...) ここでデータベースfooに接続したいものはBarを継承すればいいと書いてありま す。たとえば、データベースfooにあるテーブルbazesに関するクラスは class Baz < Bar; end と書けばいい訳です。 実際にはBarにはいろいろメソッドを記述したりすることもあるでしょう。なの で同じデータベースにアクセスするためだけにBarを継承するのは変です(よね? こんな風に感じるの私だけかな)。変な上に害もあります。そこでクラスに中間 層(Foo)を設けて、 class Foo < ActiveRecord::Base; end class Bar < Foo; end class Baz < Foo; end Foo.establish_connection(:database => 'foo', ...) とやりたいと思いました。が、たとえばBar.find(:all)を実行したら、 ActiveRecordは存在しないテーブルfoosの情報を取ろうとしてエラーになってし まいます(おそらくfoosのカラムの情報などをここで取りに行ってるのでしょう)。 こんなエラーです; ActiveRecord::StatementInvalid: ERROR: Relation "foos" does not exist もちろんテーブルfoosを作っておけばいいんですが、使いもしないテーブルを作っ ておくのは美しくないような気がしています。もうちょっとエレガントな解決法 はないものでしょうか? -- 浦 岳史 (うら たけふみ) 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... ]