Также известен как вопрос «У пользователя много баз данных». >>
Среда
Мое приложение смоделировано так:
user has_many databases
database has_many tables
table has_many rows
row habtm(+value) columns
Вы поняли!
Таким образом, вместо моделирования базы данных внутри базы данных, я хотел бы иметь:
- базу данных sqlite3, которая содержит пользователей и
- множество баз данных sqlite для каждого пользователя
Каждый пользователь будет LCRUD свои таблицы в своих базах данных (аналог phpmyadmin)
Проблема
Я хотел бы иметь потокобезопасную конфигурацию для каждого запроса для соединения с базой данных и имя_таблицы
class Table < ActiveRecord::Base
end
# in some controller
# set the connection to the user-selected database from some DB list
Table.connection = current_user.session.connection
# set the name to the user-selected table from some tables list
Table.table_name = params[:table_name]
@rows = Table.all #display them
EDIT
Как видите, соединение является глобальным и разделяется между потоками, но каксогласно спецификациям моего приложения, каждый пользователь имеет свое собственное соединение.А теперь представьте, что 2 разных пользователя делают 2 запроса одновременно.
Опции?
- Я отказываюсь от ActiveRecord и использую драйвер БД с пустыми костями
- Я отказываюсь от темы безопасности