Схемы в DB2 - очень удобный способ предоставления отдельного пространства имен для различных приложений. Например, вы можете отделить все объекты базы данных для приложения, называемого «рекрутинг», от приложения, называемого «платежная ведомость». Вы можете иметь объекты (таблицы, представления, процедуры и т. Д.) С одинаковыми именами, находящиеся в нескольких схемах и не совпадающие друг с другом. Создание схемы для вашего приложения - удобный способ сказать: «Эй, я заработная плата, и я хочу работать только с моими объектами». Итак, что происходит, когда вы хотите работать с объектами, принадлежащими другому приложению? Что ж, в традиционных процедурных языках программирования код вашего приложения будет явно указывать схему при обращении к объекту в другой схеме, или вы просто сделаете SET CURRENT SCHEMA для переключения на другую схему. Проблема с ORM, такими как ActiveRecord в Ruby on Rails, заключается в том, что вы не должны использовать SQL, т. Е. У вас нет хорошего «пути Rails» для указания схемы при обращении к объекту. Вы можете использовать find_by_sql и квалифицировать ваши объекты в операторе SQL, но это не то, что люди из RoR считают хорошим Rails.
Вы можете исправить положение на стороне DB2. Вы можете определить представление для каждой таблицы в «внешней» схеме, но вам нужно будет позаботиться о том, чтобы дать имя представлению, чтобы оно не совпадало с тем, что у вас уже есть в основной схеме. И когда вы это сделаете, вы, несомненно, создадите имена, которые не являются настоящими именами Rails.
Rails люди очень гордятся "Rails way". Это позволяет очень легко создавать новые приложения. Rails действительно потрясающий в этом пространстве. Однако, когда дело доходит до интеграции с уже существующим Rails ... как мы это говорим ... отстой. Я полагаю, вам придется согласиться на то, что не является лучшим примером Rails Way, если вы хотите работать с существующими структурами базы данных.