Skip to content

Instantly share code, notes, and snippets.

@jess
Created November 21, 2013 16:33
Show Gist options
  • Save jess/7585056 to your computer and use it in GitHub Desktop.
Save jess/7585056 to your computer and use it in GitHub Desktop.
def column_grades(program_assignment, answer_sets)
CSV.generate(col_sep: "\t") do |csv|
problem_set_headings = program_assignment.problem_sets.published.order(:due).map(&:name)
csv << ["name", "student id", "student email"] + problem_set_headings
answer_sets.each_pair do |user, ans_sets|
grades = {}
ans_sets.map{|as| grades[as.problem_set_id] = as.grade }
user = ans_sets.first.user
row = [user.name, user.studentid, user.email]
program_assignment.problem_sets.published.order(:due).each do |ps|
if grades[ps.id].present?
row << grades[ps.id].round(3)
else
row << 0
end
end
csv << row
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment