Module: Mongoid::Orderable::Mixins::Listable

Defined in:
lib/mongoid/orderable/mixins/listable.rb

Instance Method Summary collapse

Instance Method Details

#first?(field = nil) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/mongoid/orderable/mixins/listable.rb', line 39

def first?(field = nil)
  in_list?(field) && orderable_position(field) == orderable_top(field)
end

#in_list?(field = nil) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/mongoid/orderable/mixins/listable.rb', line 7

def in_list?(field = nil)
  persisted? && !orderable_position(field).nil?
end

#last?(field = nil) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/mongoid/orderable/mixins/listable.rb', line 43

def last?(field = nil)
  in_list?(field) && orderable_position(field) == orderable_bottom(field)
end

#next_item(field = nil) ⇒ Object

Returns the next item in the list



34
35
36
37
# File 'lib/mongoid/orderable/mixins/listable.rb', line 34

def next_item(field = nil)
  field ||= default_orderable_field
  orderable_scope(field).where(orderable_field(field) => send(field) + 1).first
end

#next_items(field = nil) ⇒ Object

Returns items below the current document. Items with a position greater than this document’s position.



21
22
23
24
# File 'lib/mongoid/orderable/mixins/listable.rb', line 21

def next_items(field = nil)
  field ||= default_orderable_field
  orderable_scope(field).gt(orderable_field(field) => send(field))
end

#previous_item(field = nil) ⇒ Object Also known as: prev_item

Returns the previous item in the list



27
28
29
30
# File 'lib/mongoid/orderable/mixins/listable.rb', line 27

def previous_item(field = nil)
  field ||= default_orderable_field
  orderable_scope(field).where(orderable_field(field) => send(field) - 1).first
end

#previous_items(field = nil) ⇒ Object Also known as: prev_items

Returns items above the current document. Items with a position lower than this document’s position.



13
14
15
16
# File 'lib/mongoid/orderable/mixins/listable.rb', line 13

def previous_items(field = nil)
  field ||= default_orderable_field
  orderable_scope(field).lt(orderable_field(field) => send(field))
end