From 141450a84056ac9466e7cdd360a9fd71481520b4 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Sun, 25 Nov 2018 20:22:43 +0100 Subject: [PATCH] Migrate User to abstract class --- app/models/concerns/user.rb | 32 -------------------------------- app/models/external_user.rb | 3 +-- app/models/internal_user.rb | 3 +-- app/models/user.rb | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 36 deletions(-) delete mode 100644 app/models/concerns/user.rb create mode 100644 app/models/user.rb diff --git a/app/models/concerns/user.rb b/app/models/concerns/user.rb deleted file mode 100644 index 78299717..00000000 --- a/app/models/concerns/user.rb +++ /dev/null @@ -1,32 +0,0 @@ -module User - extend ActiveSupport::Concern - - ROLES = %w(admin teacher) - - included do - belongs_to :consumer - has_many :exercises, as: :user - has_many :file_types, as: :user - has_many :submissions, as: :user - has_many :participations, through: :submissions, source: :exercise, as: :user - has_many :user_proxy_exercise_exercises, as: :user - has_many :user_exercise_interventions, as: :user - has_many :interventions, through: :user_exercise_interventions - accepts_nested_attributes_for :user_proxy_exercise_exercises - - - scope :with_submissions, -> { where('id IN (SELECT user_id FROM submissions)') } - end - - ROLES.each do |role| - define_method("#{role}?") { try(:role) == role } - end - - [ExternalUser, InternalUser].each do |klass| - define_method("#{klass.name.underscore}?") { is_a?(klass) } - end - - def to_s - displayname - end -end diff --git a/app/models/external_user.rb b/app/models/external_user.rb index b877f08d..29c52692 100644 --- a/app/models/external_user.rb +++ b/app/models/external_user.rb @@ -1,5 +1,4 @@ -class ExternalUser < ApplicationRecord - include User +class ExternalUser < User validates :consumer_id, presence: true validates :external_id, presence: true diff --git a/app/models/internal_user.rb b/app/models/internal_user.rb index e7adda6d..9cef2cb4 100644 --- a/app/models/internal_user.rb +++ b/app/models/internal_user.rb @@ -1,5 +1,4 @@ -class InternalUser < ApplicationRecord - include User +class InternalUser < User authenticates_with_sorcery! diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 00000000..5c045101 --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,34 @@ +class User < ApplicationRecord + self.abstract_class = true + + ROLES = %w(admin teacher) + + belongs_to :consumer + has_many :exercises, as: :user + has_many :file_types, as: :user + has_many :submissions, as: :user + has_many :participations, through: :submissions, source: :exercise, as: :user + has_many :user_proxy_exercise_exercises, as: :user + has_many :user_exercise_interventions, as: :user + has_many :interventions, through: :user_exercise_interventions + accepts_nested_attributes_for :user_proxy_exercise_exercises + + + scope :with_submissions, -> { where('id IN (SELECT user_id FROM submissions)') } + + ROLES.each do |role| + define_method("#{role}?") { try(:role) == role } + end + + def internal_user? + is_a?(InternalUser) + end + + def external_user? + is_a?(ExternalUser) + end + + def to_s + displayname + end +end