お世話になっております。
現在、以下のように4つのシステムを開発しております。
DBは同一のDBサーバーで処理をしようとしていますが、スキーマで以下のようにテーブルを分けたいと
考えています。
Aシステムソリューション Bシステムソリューション Cシステムソリューション D共通部分ソリューション DB - schemaA - Aシステム関するテーブル - schemaB - Bシステム関するテーブル - schemaC - Cシステム関するテーブル - schemaCommon - Dシステムに関する(ABCに共通する情報)テーブル
各ABCシステムが、CommonのschemaのテーブルとjoinするようなSQLや、Commonのschemaテーブルに
アクセスするようなSQLを投げることがあります。
この際に、各ABCシステムが、Common側のDBに対してどのようなモデルを作成するべきなのかをお聞きしたいです。
(A、B、Cのシステムには、DシステムのModelファイルは出来れば作成したくはないです。)
方法としては以下の3点を考えました。
- 1.Aシステムに、CommonSchemaにあるテーブルをActiveModelで作成して、生SQLでschema修飾する - allやselectなどというメソッドをすべて自分で実装する必要があるため、あまり賢くなさそう - 2.AシステムにもCommonと同じモデルを作成し、schemaのみ修飾する - モデル単位でschema修飾するような方法が見つかりませんでした。 - 3.schema_search_pathをdatabase.ymlに追加する - schema_search_path: A,D のように追加することで、Aに存在しないテーブルをDから取得することができるのを 確認しました。しかし、もしもAにDと同名のテーブルがあった場合に、Aから取得してしまうという危険性があるので、最終手段としたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。