У меня есть отдельный сервер, содержащий Ruby on Rails API (DB - postgres), который будет использоваться несколькими приложениями другой. Я думал об использовании схем для сортировки таблиц, которые потребуются каждому приложению, и иметь «общую» схему, содержащую таблицы, которые будут совместно использоваться приложениями (пользователи, сотрудники и т. д.). Каждая схема приложения будет иметь примерно 10 таблиц, а общая схема будет содержать около 15. Текущий план состоит в том, чтобы около 3-5 приложений, использующих этот API, все использовали одни и те же общие таблицы.
У меня вопрос: стоит ли реализовывать схемы Postgres с Ruby on Rails? Я искал ресурсы по этой теме, но, похоже, по ней не так много информации. Есть пара статей, написанных в 2011/2012, но ничего ближе к 2018 году. Одна из главных вещей, которые я искал, - это как правильно создавать рельсовые миграции с помощью схем postgres.
Я также прочитал комментарий пользователя, в котором говорится, что они использовали postgres и rails отдельно, но никогда не будут использовать их вместе.
Кажется хорошей идеей использовать схемы для организации БД, но не хочу идти по этому пути, если для этого потребуется много ручной работы / обслуживания БД.
Спасибо,





Это можно легко реализовать с помощью Rails, однако вам придется переопределить имя таблицы по умолчанию, ожидаемое Rails, чтобы оно указывало на конкретную схему:
class YourSchemaRecord < ApplicationRecord
self.table_name_prefix = 'name_of_your_schema.'
end
class SomeRecord < ApplicationRecord
end
class YourCommonSchemaRecord < ApplicationRecord
self.table_name_prefix = 'public.'
end
class SomeCommonRecord < YourCommonSchemaRecord
end
Что касается миграции Rails, вы можете использовать простой SQL (мой любимый вариант) или использовать встроенный метод Rails, но с указанием «полного пути» таблицы, структуру которой вы хотите обновить:
add_column 'name_of_your_schema.some_records', :some_column, :string
Да точно! Это помогает организовать ваши таблицы более чистым способом, чем просто префиксы в именах таблиц, + я почти уверен, что это также помогает для оптимизации в долгосрочной перспективе (сам еще не дошел до этой части)
Предлагаю пройти гем квартира. Он имеет отличную поддержку для нескольких схем с одним БД, если вы используете postgres. Или, если вы хотите реализовать все самостоятельно, пройдите этот эпизод железнодорожные трансляции. Вы поймете, как к этому подойти.
Спасибо за ответ @MrYoshiji, оцените примеры! Вы рекомендуете идти по маршруту схемы?