Использование схемы Postgres с Ruby on Rails - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть отдельный сервер, который содержит API Ruby on Rails (DB - postgres), который будет использоваться несколькими различными приложениями. Я думал о том, чтобы использовать схемы для сортировки таблиц, которые потребуются каждому приложению, и иметь «общую» схему, которая содержит таблицы, которые приложения будут совместно использовать (пользователи, сотрудники и т. Д.). Каждая схема приложения будет иметь приблизительно 10 таблиц, а общая схема будет содержать около 15. В настоящее время планируется, чтобы около 3-5 приложений, использующих этот API, использовали одинаковые общие таблицы.

У меня вопрос: стоит ли реализовывать схемы Postgres с Ruby on Rails? Я искал некоторые ресурсы по этой теме, но, похоже, не так много информации об этом. В 2011/2012 написано несколько статей, но не ближе к 2018. Одна из главных вещей, которые я искал, - это как правильно создать миграцию rails с помощью схем postgres.

Я также прочитал комментарий от пользователя, в котором говорилось, что они использовали postgres и rails по отдельности, но никогда не будут использовать их вместе.

Кажется хорошей идеей использовать схемы для организации БД, но не хочу идти по этому пути, если это потребует много ручной работы / обслуживания БД.

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Я предложу вам пройти через квартиру драгоценный камень.Он имеет отличную поддержку нескольких схем БД, если вы используете postgres.Или, если вы хотите реализовать все самостоятельно, пройдите этот railscasts эпизод.Вы поймете, как к нему подойти.

0 голосов
/ 14 сентября 2018

Это может быть легко реализовано с помощью 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...