[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44546] Re: 通常使うDB以外のDBを使うには

From: "Ken Date" <itacchi@...>
Date: 2008-01-29 05:31:40 UTC
List: ruby-list #44546
こんにちは。伊達ともうします。

> Ruby on RailsでWEBアプリを作っているのですが、
> 自分が作るWEBアプリ内なら、自分のところのDBが
> 使えるのですが、一箇所だけ共通にDBにアクセスする
> 必要があり困ってます。

ActiveRecord は複数のデータベースに接続することができますので、
接続の制御を細かくやる必要がなければ簡単です。

まず、config/database.yml に共通データベースの設定を追加します。

common:
  adapter: postgresql
  database: commondb
  username: username
  password: password

次にこのデータベース用のモデルクラスを用意します。
例えば hoges テーブルだとすると、app/models/hoge.rb に

class Hoge < ActiveRecord::Base
  establish_connection(:common)
end

です。

これでおそらく使えるようになりますので、script/console で Hoge.find してみてください。

複数テーブルがある場合には、親クラスを用意してそれを継承させます。
普通に継承してしまうと STI になってしまうので、abstract_class = true としてください。

-- app/models/common_model.rb
class CommonModel < ActiveRecord::Base
  abstract_class = true
  establish_connection(:common)
end

-- app/models/foo.rb
class Foo < CommonModel
end

-- app/models/bar.rb
class Bar < CommonModel
end

In This Thread