2017-09-28 7 views
0

J'ai créé une application multi-location avec Apartment gem et rails 5. J'ai réussi à créer un nouveau locataire, mais je veux le semer. Lorsque j'exécute le fichier seed, il indique que la graine a été lancée pour ce nouveau locataire (Seeding locataire_nom_client), mais il n'y a pas de données, seulement sur le schéma public. Je peux voir 2 schémas créés sur PostgreSQL db, le public et le nouveau, mais il ne remplit que le schéma public. Pourquoi?Rails Multi Tenancy question de l'ensemencement

essayé de mettre sur seeds.rb:

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

Et:

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

Mais bon.

Quelqu'un?

Merci d'avance!

Répondre

0

Votre approche est correcte, mais s'il vous plaît assurez-vous que ceux-ci:

  1. Assurez-vous schema_path PG:

Exemple: database.yml devrait ressembler à:

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

development: 
    <<: *default 
database: your_development_db 

2. Pour schema -specific data populati sur, déclaration courir à l'intérieur locataire switch bloc:

En seed.rb, créez d'abord locataire, puis passer à ce locataire comme ceci:

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 

Cheer!