How Do I Create an App Where Each User Has A Separate Table
Hi,
I want to create a web app which is a simple HR SaaS. Each user/company which registers will have get a separate table to upload list of employees. In terms of autorization a user/company can access only their table.
It is possible/advisible to take this approach in Rails i.e.
- A user can create their own table in database
- User can modify columns of the database
Thanks for the help.
Regards
Vikram
your SaaS app will have more than one table. Ex. Users table, Employees Table, Org Table. You mean you want a multi-tenant app where each companies data is separate from the others. Few ways to do this:
- one db for all your customers but scope via tentant_id or company_id etc
- one app but each customer gets their own db instance (expensive)
- postgres schema - if you use postgres as your db then you can have one db but separate schemas for each customer.
Gems you can use:
- https://github.com/influitive/apartment
- https://github.com/ErwinM/acts_as_tenant
- https://github.com/jekuno/milia
if you really want to learn how to build this you can also look at the following book: https://leanpub.com/multi-tenancy-rails
OR
check out Chris's video on the apartment gem (search in episodes)
For anyone interested this post talks about how to setup multi-tenancy using uuid's and not subdomains using postgresql.
http://andrewmarkle.com/2016/04/06/multitenancy-with-pundit/