Let me know what you think. (interaction diagram coming soon)
+----------------------------------+
+-------------------------+ | Organization |
| User | | |
| | | has_many: individual_assignments |
| has_many :repo_accesses | | has_many: group_assignments |
| github_user_id | | has_many: repo_accesses |
+-------------------------+ +----------------------------------+
+--------------------------+
| RepoAccess |
| |
| belongs_to :organization |
| belongs_to :user |
| github_team_id |
+--------------------------+
+----------------------+ +-------------------------+
| AssignmentRepo | | GroupAssignmentRepo |
| | | |
| has_one :repo_access | | has_many :repo_accesses |
| github_repo_id | | github_repo_id |
+----------------------+ +-------------------------+
+----------------------------------+
+----------------------------+ | Grouping |
| IndividualAssignment | | |
| | | has_many :group_assignment_repos |
| has_many :assignment_repos | | title |
+----------------------------+ +----------------------------------+
+-------------------+
| GroupAssignment |
| |
| has_one :grouping |
+-------------------+