Overview¶
Models in our system are categorized into three primary namespaces: school, library, and license. Additionally, there are common models that do not belong to any specific namespace.
-
Library Namespace: Models within the
librarynamespace are designed to be accessible across all schools. This allows for shared resources and data that can be utilized by any school within the system. -
School Namespace: Models within the
schoolnamespace are specific to individual schools. These models are managed using theacts_as_tenantgem, which ensures that each school's data is isolated at the row level. This isolation prevents any cross-references or data leakage between different schools, maintaining data integrity and security. -
License Namespace: Models within the
licensenamespace are managed similarly to theschoolnamespace, using theacts_as_tenantgem to ensure row-level isolation. This ensures that license-specific data is kept separate and secure, preventing any unauthorized access or data leakage.
By organizing models in this manner, we can efficiently manage shared resources while ensuring strict data separation where necessary.
We utilize several gems in our applications, with the following being the most crucial for providing foundational architectural support:
- ActsAsTenant
- Ancestry
- Devise
- Doorkeeper