Каков наилучший способ подключения к базе данных для каждого пользователя в Rails - PullRequest
6 голосов
/ 12 сентября 2008

Каков наилучший способ подключения к базе данных для каждого пользователя в Rails?

Я понимаю, что это плохая практика проектирования Rails, но мы постепенно заменяем существующее веб-приложение, которое использует одну базу данных на пользователя. Полная переработка / переписывание невозможна.

Ответы [ 2 ]

10 голосов
/ 12 сентября 2008

Поместите что-то подобное в свой контроллер приложений. Я использую поддомен плюс "_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
1 голос
/ 12 сентября 2008

Взгляните на ActiveRecord :: Base.establish_connection . Вот как вы подключаетесь к другому серверу базы данных. Я не могу помочь, поскольку не знаю, как вы узнаете пользователя или сопоставите его с базой данных, но я полагаю, что основная база данных будет иметь эту информацию (и информация о соединении должна быть в файле database.yml ).

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...