diff --git a/app/models/code_ocean/file.rb b/app/models/code_ocean/file.rb index 9cc85832..ccfa7f46 100644 --- a/app/models/code_ocean/file.rb +++ b/app/models/code_ocean/file.rb @@ -24,6 +24,10 @@ module CodeOcean scope :editable, -> { where(read_only: false) } scope :visible, -> { where(hidden: false) } + ROLES.each do |role| + scope :"#{role}s", -> { where(role: role) } + end + validates :feedback_message, if: :teacher_defined_test?, presence: true validates :feedback_message, absence: true, unless: :teacher_defined_test? validates :file_type_id, presence: true diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 5fb887e0..28f9781f 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -43,7 +43,7 @@ class Exercise < ActiveRecord::Base private :generate_token def maximum_score - files.where(role: 'teacher_defined_test').sum(:weight) + files.teacher_defined_tests.sum(:weight) end def set_default_values @@ -56,7 +56,7 @@ class Exercise < ActiveRecord::Base end def valid_main_file? - if files.where(role: 'main_file').count > 1 + if files.main_files.count > 1 errors.add(:files, I18n.t('activerecord.errors.models.exercise.at_most_one_main_file')) end end