2017-09-28 3 views
0

私はアパートの宝石とレールを持つマルチテナントアプリを作成しました。5.私は首尾よく新しいテナントを作成しましたが、私はそれを植えたいです。シードファイルを実行すると、この新しいテナント(シードテナント名テナント)に対してシードが実行されていると表示されますが、そこには公開スキーマのみのデータはありません。 PostgreSQL db、public、および新しいスキーマで作成された2つのスキーマが表示されますが、公開スキーマにのみ入力されます。どうして?Rails Multi Tenancy seeding issue

seeds.rbに入れてみました:

Apartment::Tenant.switch!('tenant_name') 

そして:

if Apartment::Tenant.current == "tenant_name"... 

しかし、誰良いです。

誰でも?

ありがとうございます!

答えて

0

あなたのアプローチは正しいですが、これらを確認してください。

  1. はPGでschema_pathを確認します。

例:database.ymlは次のようになります。

default: &default 
    adapter: postgresql 
    schema_search_path: 'public,shared_extensions' 
    encoding: unicode 
    pool: 5 
    prepared_statements: false 

development: 
    <<: *default 
database: your_development_db 

2。 schema特有のデータのポピュラーテナントswitchブロック内、実行するステートメントに:seed.rb

、最初のテナントを作成し、その後、このようにそのテナントに切り替える:

Apartment::Tenant.switch('tenant_name') do 
    # Do all stuff here inside this block 
    # User.create(user_attributes) will create use only inside `tenant_name` schema 
end 

応援を!