Class: Submission

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
app/models/submission/submission.rb

Direct Known Subclasses

ConsoleSubmission, PersistentSubmission, Question

Constant Summary collapse

ATTRIBUTES =
[:solution, :status, :result, :expectation_results, :feedback, :test_results,
:submission_id, :queries, :query_results, :manual_evaluation_comment]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_attributes(*args) ⇒ Object



13
14
15
# File 'app/models/submission/submission.rb', line 13

def self.from_attributes(*args)
  new ATTRIBUTES.zip(args).to_h
end

.mapping_attributesObject



17
18
19
# File 'app/models/submission/submission.rb', line 17

def self.mapping_attributes
  ATTRIBUTES
end

Instance Method Details

#evaluate!(assignment) ⇒ Object



29
30
31
32
33
# File 'app/models/submission/submission.rb', line 29

def evaluate!(assignment)
  try_evaluate! assignment
rescue => e
  {status: :errored, result: e.message}
end

#idObject



35
36
37
# File 'app/models/submission/submission.rb', line 35

def id
  @id ||= SecureRandom.hex(8)
end

#run!(assignment, evaluation) ⇒ Object



21
22
23
24
25
26
27
# File 'app/models/submission/submission.rb', line 21

def run!(assignment, evaluation)
  save_submission! assignment
  results = evaluation.evaluate! assignment, self
  save_results! results, assignment
  notify_results! results, assignment
  results
end