6

でユーザーごとのデータベース接続を行うための最良の方法は何Railsですか?

これはRailsの設計手法としては不十分だと思いますが、ユーザーごとに1つのデータベースを使用する既存のWebアプリケーションを徐々に置き換えています。完全な再設計/書き換えは実行できません。

4

2 に答える 2

10

このようなものをアプリケーションコントローラーに入れます。サブドメインと「_clientdb」を使用して、データベースの名前を選択しています。すべてのデータベースで同じユーザー名とパスワードを使用しているので、db 構成ファイルから取得できます。

お役に立てれば!

class ApplicationController < ActionController::Base

  before_filter :hijack_db

  def hijack_db
    db_name = request.subdomains.first + "_clientdb"

    # lets manually connect to the proper db
    ActiveRecord::Base.establish_connection(
      :adapter  => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['adapter'],
      :host     => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['host'],
      :username => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['username'],
      :password => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['password'],
      :database => db_name
    )
  end
end
于 2008-09-12T14:01:09.207 に答える
1

ActiveRecord::Base . Establish_connectionを見てください。これが、別のデータベース サーバーに接続する方法です。ユーザーを認識したり、データベースにマップしたりする方法がわからないため、これ以上の助けにはなりませんが、マスターデータベースにはその情報が含まれていると思います(接続情報はdatabase.ymlファイルにあるはずです) )。

幸運を祈ります。

于 2008-09-12T11:55:07.807 に答える