先日からrubyonrailsの学習を初め、tutorialを終了した程度の知識です。
実現したいWebサイトは、Web画面上で会社を選択すると、その会社ごとに異なるDBに接続するようなサイトです。(接続先だけではなく、Modelも異なる可能性があります。)
Railsでは、ActiveRecordが標準的に使われていますが、こちらはあくまで1つのDBでの処理を前提として作られているようで、接続先を切り替えるにはあまり適していない様な印象を受けます。(DBの負荷等の問題)
現在は、database.ymlをコード上で書き換えて、establish connectionで
接続先を変更していますが、他に効率の良いやり方を模索しています。
ネット上で探してみると、「Sequel」というgemを使うことで、ActiveRecordより簡単にDB接続の切り替えができるようになるようですが、情報が少なく、手を出せていません。
質問は以下の通りです。
1.database.ymlを書き換える以外に、良い方法はないか
2.Sequelというgemは、ActiveRecordにとって代わるものなのか、それともActiveRecordと組み合わせてつかうものなのかどうか
3.上記の2の場合、DB接続部分のみSequelを使用し、validationやmigration等はActiveRecordのほうの処理に任せるようなことはできるのか
現在のDB接続方式は以下の通りです。
Modelクラスに下記のクラスを継承させて、Controllerからconnectionchangedbメソッドに引数を渡すことで接続先を変更しています。
class BaseModel < ActiveRecord::Base
self.abstract_class = true
def connectionchange(host = 'localhost',db = 'def_connection')
//接続先取得
conf = Rails.configuration.database_configuration[Rails.env].dup
//受け取った引数で書き換え
conf['host'] = xx.xx.xx.xx
conf['db'] = xx_connection
User.establish_connection(conf)
end
end
Railsの知識が未熟なため、根本的に誤っている質問をしているような気もするので、バシバシご指導お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/16 01:29