I am creating a multi-tenant rails app for different clubs. I'm using the apartment gem so it creates different databases for each club which has more than 100 tables. now i want to take dump of one tenant and import it to other club tenant
            Asked
            
        
        
            Active
            
        
            Viewed 449 times
        
    -2
            
            
        - 
                    Looks like an intention. So what's your question? – nattfodd Mar 20 '18 at 09:56
- 
                    How do you want us to do it for you? – Jagdeep Singh Mar 20 '18 at 13:20
2 Answers
0
            
            
        Apartment gem create different schema for different tenenats not databases. You can check difference here.
For your case you can copy record of one schema using below command:
pg_dump -U <username> -p <port> -n <source> <database name> >> <dump filename>
source is your schema name for source. It is your primary tenant which you want to copy.
target is you schema where you want copy all records.
Change your schema name in your new dump file by opening in any editor.
# edit the dump.file
CREATE SCHEMA <source>; => CREATE SCHEMA <target>;
ALTER SCHEMA <source> OWNER TO <username>; => ALTER SCHEMA <target> OWNER TO <username>; 
Now restore new dump file.
psql -U <username> -p <port> -d <database> -f <dump filename>
You can copy data from one tenant to another tenanat by creating a rake task and switching tenants.
Apartment::Tenant.switch!("one tenant")
# Retrive data that you want in a local object
# local_object = Model.all
Apartment::Tenant.switch!("second tenant")
# Save all data in second tenant from local_oject
# local_oject.each do |object|
#   object.save
# end
 
    
    
        Dipak Gupta
        
- 7,321
- 1
- 20
- 32
0
            
            
        using this way but not saving in new tenant    
Apartment::Tenant.switch("tenant1")
        members= Member.all
        Apartment::Tenant.switch("tenant2")
        members.each do |member|
          begin
            member.save
            puts "migrating member.id"
          rescue=>e
            puts e
          end
        end
 
    
    
        Nadir Jahan
        
- 1
- 2
- 
                    
- 
                    Is your new tenant properly created ? use switch! instead of switch in your rake task to make sure tenant exist. – Dipak Gupta Mar 20 '18 at 14:31