
Untitled
By: a guest on
Jun 17th, 2012 | syntax:
None | size: 1.05 KB | hits: 18 | expires: Never
## Grade.rb
class Grade < ActiveRecord::Base
validates_inclusion_of :letter, :in => %w( A B C D F )
before_save :translate_letter_to_score
belongs_to :user
validates_presence_of :user
validate :user_has_not_cast_grade_today
attr_accessor :letter
def self.decimal_average
self.average('score').round(2)
end
def self.letter_average
{ 4 => "A", 3 => "B", 2 => "C", 1 => "D", 0 => "F"}[Grade.decimal_average.round]
end
def translate_letter_to_score
self.score = { "A" => 4, "B" => 3, "C" => 2, "D" => 1, "F" => 0}[letter]
end
private
def user_has_not_cast_grade_today
errors.add(:base, "Nice try, but you've already graded the President today! Come back tomorrow :-)") if user.grades.exists?(:created_at => DateTime.current.beginning_of_day..DateTime.current)
end
end
# == Schema Information
#
# Table name: grades
#
# id :integer not null, primary key
# score :float
# created_at :datetime
# updated_at :datetime
# user_id :integer
#