Материал, который я уже выяснил
Я изучаю, как создать многопользовательское приложение в Rails, которое обслуживает данные из разных схем на основе того, какой домен или поддомен используется для просмотра приложения.
У меня уже есть несколько вопросов:
- Как вы можете получить subdomain-fu для работы с доменами? Здесь кто-то, кто задал тот же вопрос, который приведет вас к этому блогу.
- Какая база данных и как она будет структурирована? Здесь отличный разговор Guy Naor и хороший вопрос о PostgreSQL и схемах.
- Я уже знаю, что мои схемы будут иметь одинаковую структуру. Они будут отличаться данными, которые они хранят. Итак, как вы можете выполнять миграции для всех схем? Здесь .
Эти три момента охватывают многие общие вещи, которые мне нужно знать. Однако на следующих шагах у меня, похоже, много способов реализации вещей. Я надеюсь, что там будет лучший, более простой способ.
Наконец, на мой вопрос
Когда новый пользователь подписывается, я могу легко создать схему. Тем не менее, , какой был бы самый лучший и простой способ загрузить структуру, которая уже есть в остальных схемах? Вот несколько вопросов/сценариев, которые могут дать вам лучшую идею.
- Должен ли я передать его в оболочку script, которая сбрасывает общедоступную схему во временную и импортирует ее обратно в мою основную базу данных (в значительной степени, как говорит Гай Наор в своем видео )? Здесь краткое резюме / script, которое я получил из полезных #postgres на freenode. Хотя это, вероятно, будет работать, мне придется делать много вещей за пределами Rails, что делает меня немного неудобным.., что также приводит меня к следующему вопросу.
- Есть ли способ сделать это прямо из Ruby on Rails? Как и создание схемы PostgreSQL, просто загрузите схему базы данных Rails (schema.rb - я знаю, это запутанно) в эту схему PostgreSQL.
- Есть ли gem/plugin, у которого уже есть эти вещи? Методы типа "create_pg_schema_and_load_rails_schema (the_new_schema_name)". Если нет, я, вероятно, буду работать над тем, чтобы сделать один, но я сомневаюсь, насколько хорошо он будет тестироваться со всеми движущимися частями (особенно, если я в конечном итоге использую оболочку script для создания и управления новыми схемами PostgreSQL).
Спасибо, и я надеюсь, что это было не слишком долго!