Module: Flashcard::Base::InstanceMethods

Defined in:
lib/acts_as_flashcard.rb

Instance Method Summary collapse

Instance Method Details

#answered!(ease) ⇒ Object

ease: 0 - 4



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/acts_as_flashcard.rb', line 72

def answered!(ease)
  increment_repetitions(ease)
  last_delay_secs = (Time.now - self.combined_due).to_f
  last_delay    = last_delay_secs / 86400.0
  self.interval = next_interval(ease) unless last_delay >= 0 # keep last interval if reviewing early
  last_due      = self.due
  self.due      = next_due(ease)
  update_factor(ease) if last_delay >= 0
  min_of_other_cards = acts_as_flashcard_class.minimum('interval', :conditions => "#{scope_condition} AND id != #{self.id}")
  space = min_of_other_cards.nil? ? 0 : [min_of_other_cards, self.interval].min
  space = space * 0.1.day
  space = [space, 60].max
  space = Time.now + space
  self.combined_due = [space, due].max
  save
end