Module: ScopedTraversal::ModelAdditions

Defined in:
lib/scoped_traversal/model_additions.rb

Instance Method Summary collapse

Instance Method Details

#traverse_by(scope, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/scoped_traversal/model_additions.rb', line 4

def traverse_by(scope, options = {})
    
  if options[:namespace] == true
    next_method_name       = "next_#{scope}"
    previous_method_name   = "previous_#{scope}"
  elsif options[:namespace]
    next_method_name       = "next_#{options[:namespace]}"
    previous_method_name   = "next_#{options[:namespace]}"
  else
    next_method_name       = "next"
    previous_method_name   = "previous"
  end

  define_method next_method_name do
    list = self.class.try(scope.to_sym).all
    list[list.index(self) + 1]
  end

  define_method previous_method_name do
    list = self.class.try(scope.to_sym).all
    list[list.index(self) - 1]
  end

end