10

this articleの後にマルチテナントアプリを開発しています。問題は、初めてすべての移行を実行する場合です。 schema.rbファイルではパブリック・スキーマの表のみですが、他のスキーマはどうなっていますか?異なる構造の他のスキーマを作成するにはどうすればいいですか?public私は宝石を使いたくありません。Postgres複数のスキーマデータベースを使用する

publicスキーマのためにプライベートスキーマ

class CreateObjectives < ActiveRecord::Migration 

    include MultiSchema 

    def change 
    with_in_schemas :except => :public do 
     # Create objectives table 
    end 
    end 
end 

schema.rb

のために作成される

class CreatePerspectives < ActiveRecord::Migration 
    include MultiSchema 
    def up 
     with_in_schemas :only => :public do 
     # Create table perspectives 
     end 
    end 


    def down 
    with_in_schemas :only => :public do 
     drop_table :prespectives 
    end 
    end 
end 

表を作成する

以下の表の例を参照してください。

ActiveRecord::Schema.define(version: 20130810172443) do create_table "perspectives", force: true do |t| t.string "name" t.datetime "created_at" t.datetime "updated_at" end end 
+0

複数のスキーマが必要な理由がわかりません。 1つしか使用できず、ユーザーの役割に基づいて特定の情報にアクセスできないようにすることはできませんか? –

+0

私は何年もPostgresを使用し愛してきました。そして、スキーマとその使い方に精通しています。私はRailsの開発者でもあります。つまり、私がしなければ、私は決して二つを一緒に使うことはありません。あなたはする必要はありません。単にデータレイアウトを設計するだけです(通常はこれを「スキーマ」と呼んでいますが、問題を混乱させたくありません)、別のテーブル「会社」を追加するか、レコードを所有するテーブルを追加します。次に、さまざまなテーブル内でその所有権を与えます。私はこのようないくつかのアプリを持っており、それは難しいことではありません。 –

答えて

1

あなたはアパートの宝石を知っていますか? https://github.com/influitive/apartment

今年のプロジェクトでは、postgresqlでマルチスキーマをサポートしています。すべてが文書化され、使いやすいです。ミドルウェアモードを選択することもできます。たとえば、ドメインcustomer.applicationdomain.comにアクセスすると、アプリケーションは適切なスキーマを選択できます。ところで、サイドキックでバックグラウンドジョブを使用することもできます。

+0

質問には、特に宝石はオプションではないと言われています。 – Djizeus

関連する問題