Skip to content

Instantly share code, notes, and snippets.

@talum
Created June 2, 2018 01:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save talum/70526f08c84da89e05aaee344b972c3d to your computer and use it in GitHub Desktop.
Save talum/70526f08c84da89e05aaee344b972c3d to your computer and use it in GitHub Desktop.
class PublishableAssignmentValidation
attr_reader :assignment
def initialize(assignment)
@assignment = assignment
end
def valid?
validate
assignment.errors.none?
end
def validate
AssignmentNotPublishedValidator.new.validate(assignment)
HasAtLeastOneTaskValidator.new.validate(assignment)
HasAtLeastOneAssigneeValidator.new.validate(assignment)
GradedTasksHaveRubricValidator.new.validate(assignment)
RubricItemsHaveRequiredAttributesValidator.new.validate(assignment)
end
end
class HasAtLeastOneTaskValidator
def validate(record)
record.errors.add(:assignment, "must have at least 1 task") if record.tasks.empty?
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment