25 lines
706 B
Ruby
25 lines
706 B
Ruby
# frozen_string_literal: true
|
|
|
|
class StructuredError < ApplicationRecord
|
|
belongs_to :error_template
|
|
belongs_to :submission
|
|
|
|
has_many :structured_error_attributes
|
|
|
|
def self.create_from_template(template, message_buffer, submission)
|
|
instance = create(error_template: template, submission:)
|
|
template.error_template_attributes.each do |attribute|
|
|
StructuredErrorAttribute.create_from_template(attribute, instance, message_buffer)
|
|
end
|
|
instance
|
|
end
|
|
|
|
def hint
|
|
content = error_template.hint
|
|
structured_error_attributes.each do |attribute|
|
|
content.sub! "{{#{attribute.error_template_attribute.key}}}", attribute.value if attribute.match
|
|
end
|
|
content
|
|
end
|
|
end
|