Class: ActiveRecall::Deck

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
Base, Enumerable
Defined in:
lib/active_recall/models/deck.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.add_deck(user) ⇒ Object



35
36
37
# File 'lib/active_recall/models/deck.rb', line 35

def self.add_deck(user)
  create!(user)
end

Instance Method Details

#<<(source) ⇒ Object

Raises:

  • (ArgumentError)


29
30
31
32
33
# File 'lib/active_recall/models/deck.rb', line 29

def <<(source)
  raise ArgumentError, "Word already in the stack" if include?(source)

  items << ActiveRecall::Item.new(deck: self, source_id: source.id, source_type: source.class.name)
end

#==(other) ⇒ Object



21
22
23
# File 'lib/active_recall/models/deck.rb', line 21

def ==(other)
  _items == other
end

#_itemsObject



25
26
27
# File 'lib/active_recall/models/deck.rb', line 25

def _items
  source_class.find(items.pluck(:source_id))
end

#box(number) ⇒ Object



73
74
75
# File 'lib/active_recall/models/deck.rb', line 73

def box(number)
  source_class.find(items.where(box: number).pluck(:source_id))
end

#delete(source) ⇒ Object



39
40
41
42
43
# File 'lib/active_recall/models/deck.rb', line 39

def delete(source)
  ActiveRecall::Item
    .find_by(deck: self, source_id: source.id, source_type: source.class.name)
    .destroy
end

#eachObject



11
12
13
14
15
16
17
18
19
# File 'lib/active_recall/models/deck.rb', line 11

def each
  _items.each do |item|
    if block_given?
      yield item
    else
      yield item
    end
  end
end

#expiredObject



69
70
71
# File 'lib/active_recall/models/deck.rb', line 69

def expired
  source_class.where(id: items.expired.select(:source_id))
end

#failedObject



61
62
63
# File 'lib/active_recall/models/deck.rb', line 61

def failed
  source_class.where(id: items.failed.select(:source_id))
end

#knownObject



65
66
67
# File 'lib/active_recall/models/deck.rb', line 65

def known
  source_class.where(id: items.known.select(:source_id))
end

#lastObject



53
54
55
# File 'lib/active_recall/models/deck.rb', line 53

def last
  items.order("created_at desc").limit(1).first.try(:source)
end

#nextObject



49
50
51
# File 'lib/active_recall/models/deck.rb', line 49

def next
  _review.first.try(:source)
end

#reviewObject



45
46
47
# File 'lib/active_recall/models/deck.rb', line 45

def review
  source_class.where(id: _review.select(:source_id))
end

#source_classObject



77
78
79
# File 'lib/active_recall/models/deck.rb', line 77

def source_class
  user.deck_name.to_s.singularize.titleize.constantize
end

#untestedObject



57
58
59
# File 'lib/active_recall/models/deck.rb', line 57

def untested
  source_class.where(id: items.untested.select(:source_id))
end