diff --git a/app/controllers/concerns/lti.rb b/app/controllers/concerns/lti.rb index b7df77c7..925ed7d6 100644 --- a/app/controllers/concerns/lti.rb +++ b/app/controllers/concerns/lti.rb @@ -202,7 +202,7 @@ module Lti else StudyGroup.find_or_create_by(external_id: @provider.resource_link_id, consumer: @consumer) end - group.users << @current_user unless group.users.include? @current_user + group.external_users << @current_user unless group.external_users.include? @current_user group.save session[:study_group_id] = group.id end diff --git a/app/controllers/study_groups_controller.rb b/app/controllers/study_groups_controller.rb index ff5493b4..54ab1750 100644 --- a/app/controllers/study_groups_controller.rb +++ b/app/controllers/study_groups_controller.rb @@ -10,11 +10,11 @@ class StudyGroupsController < ApplicationController end def show - @search = @study_group.users.ransack(params[:q]) + @search = @study_group.external_users.ransack(params[:q]) end def edit - @search = @study_group.users.ransack(params[:q]) + @search = @study_group.external_users.ransack(params[:q]) @members = StudyGroupMembership.where(user: @search.result, study_group: @study_group) end diff --git a/app/models/study_group.rb b/app/models/study_group.rb index 16633165..b9e2200a 100644 --- a/app/models/study_group.rb +++ b/app/models/study_group.rb @@ -2,13 +2,15 @@ class StudyGroup < ApplicationRecord has_many :study_group_memberships, dependent: :destroy - # Use `ExternalUser` as `source_type` for now. - # Using `User` will lead ActiveRecord to access the inexistent table `users`. - # Issue created: https://github.com/rails/rails/issues/34531 - has_many :users, through: :study_group_memberships, source_type: 'ExternalUser' + has_many :external_users, through: :study_group_memberships, source_type: 'ExternalUser', source: :user + has_many :internal_users, through: :study_group_memberships, source_type: 'InternalUser', source: :user has_many :submissions, dependent: :nullify belongs_to :consumer + def users + external_users + internal_users + end + def to_s if name.blank? "StudyGroup " + id.to_s