class StudentProgress::Topic
Attributes
id[RW]
title[RW]
units[R]
Public Class Methods
all()
click to toggle source
# File lib/student_progress/topic.rb, line 7 def self.all @@all end
create_from_hash(hash)
click to toggle source
# File lib/student_progress/topic.rb, line 11 def self.create_from_hash(hash) new(hash).save end
find_by_title(title)
click to toggle source
# File lib/student_progress/topic.rb, line 15 def self.find_by_title(title) all.find{|t| t.title == title} end
new(attrs = {})
click to toggle source
# File lib/student_progress/topic.rb, line 19 def initialize(attrs = {}) attrs.each do |attr, value| self.send("#{attr}=", value) end @units = [] end
Public Instance Methods
add_unit(unit)
click to toggle source
# File lib/student_progress/topic.rb, line 31 def add_unit(unit) @units << unit unless @units.include?(unit) unit.topic = self unless unit.topic == self unit end
lessons()
click to toggle source
# File lib/student_progress/topic.rb, line 37 def lessons @units.map{|u| u.lessons}.flatten end
lessons_by_unit()
click to toggle source
# File lib/student_progress/topic.rb, line 41 def lessons_by_unit result = {} @units.each do |unit| result[unit.title] = unit.lessons.map{|l| "#{l.title} - #{l.content_type} (#{l.id})"} end result end
save()
click to toggle source
# File lib/student_progress/topic.rb, line 26 def save @@all << self self end
summary()
click to toggle source
# File lib/student_progress/topic.rb, line 49 def summary { topic: title, units: @units.map{|u| u.title}, lessons: lessons_by_unit, readmes: lessons.count{|l| l.content_type == "Readme"}, labs: lessons.count{|l| l.content_type == "Lab"}, projects: lessons.count{|l| l.content_type == "Project"} } end