質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

6629閲覧

RubyOnRailsで複数データベース接続を行う方法

shakuseki

総合スコア8

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/03/08 03:41

先日から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の知識が未熟なため、根本的に誤っている質問をしているような気もするので、バシバシご指導お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

参考情報

投稿2017/03/08 14:08

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shakuseki

2017/03/16 01:29

遅れてしまい申し訳ありません。 非常に参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問