Skip to content

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 library namespace 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 school namespace are specific to individual schools. These models are managed using the acts_as_tenant gem, 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 license namespace are managed similarly to the school namespace, using the acts_as_tenant gem 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