DevelopingCoder/cs61a_hintr

View on GitHub
app/models/tag2wronganswer.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Tag2wronganswer < ActiveRecord::Base
    validates :tag, presence: true
    validates :wrong_answer, presence: true
    belongs_to :tag
    belongs_to :wrong_answer
    has_many :hints
    
    def get_finalized_hint
        hints.each do |hint|
            if hint.finalized
                return hint.content
            end
        end
        return false
    end
    
    def self.get_id(wrong_answer, tag)
        tag2wronganswer =  Tag2wronganswer.where(:wrong_answer_id => wrong_answer.id).where(:tag_id => tag.id).first
        if tag2wronganswer
            return tag2wronganswer.id
        end
        # return -1 if error i.e. wrong_answer and tag are not associated
        return -1
    end
    
    def assigned_message
        if self.hints and self.hints.where(:finalized => true)
            return self.hints.where(:finalized => true).first
        else
            return nil
        end
    end
    
    def update_status
        if self.hints.length == 0
           self.update_attribute(:hint_status, "no hints")
        elsif self.hints.where(:finalized => true).exists?
            self.update_attribute(:hint_status, "assigned")
        else
            self.update_attribute(:hint_status, "in progress")
        end
    end
end