Class: OrderQuery::RelativeOrder
- Inherits:
-
Object
- Object
- OrderQuery::RelativeOrder
- Defined in:
- lib/order_query/relative_order.rb
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#order ⇒ Object
readonly
Returns the value of attribute order.
-
#record ⇒ Object
readonly
Returns the value of attribute record.
-
#scope ⇒ Object
readonly
Returns the value of attribute scope.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
- #after ⇒ Object
- #before ⇒ Object
- #count ⇒ Object
- #first ⇒ Object
-
#initialize(record, scope, order) ⇒ RelativeOrder
constructor
A new instance of RelativeOrder.
- #last ⇒ Object
- #next(loop = true) ⇒ Object
- #position ⇒ Object
- #previous(loop = true) ⇒ Object
- #records(mode) ⇒ Object
Constructor Details
#initialize(record, scope, order) ⇒ RelativeOrder
Returns a new instance of RelativeOrder.
7 8 9 10 11 |
# File 'lib/order_query/relative_order.rb', line 7 def initialize(record, scope, order) @record = record @scope = scope @order = order.is_a?(OrderSpace) ? order : OrderSpace.new(scope, order) end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
5 6 7 |
# File 'lib/order_query/relative_order.rb', line 5 def @options end |
#order ⇒ Object (readonly)
Returns the value of attribute order.
5 6 7 |
# File 'lib/order_query/relative_order.rb', line 5 def order @order end |
#record ⇒ Object (readonly)
Returns the value of attribute record.
5 6 7 |
# File 'lib/order_query/relative_order.rb', line 5 def record @record end |
#scope ⇒ Object (readonly)
Returns the value of attribute scope.
5 6 7 |
# File 'lib/order_query/relative_order.rb', line 5 def scope @scope end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
5 6 7 |
# File 'lib/order_query/relative_order.rb', line 5 def values @values end |
Instance Method Details
#after ⇒ Object
37 38 39 |
# File 'lib/order_query/relative_order.rb', line 37 def after records :after end |
#before ⇒ Object
41 42 43 |
# File 'lib/order_query/relative_order.rb', line 41 def before records :before end |
#count ⇒ Object
21 22 23 |
# File 'lib/order_query/relative_order.rb', line 21 def count @total ||= scope.count end |
#first ⇒ Object
13 14 15 |
# File 'lib/order_query/relative_order.rb', line 13 def first order.scope.first end |
#last ⇒ Object
17 18 19 |
# File 'lib/order_query/relative_order.rb', line 17 def last order.scope.last end |
#next(loop = true) ⇒ Object
29 30 31 |
# File 'lib/order_query/relative_order.rb', line 29 def next(loop = true) record_unless_current after.first || (first if loop) end |
#position ⇒ Object
25 26 27 |
# File 'lib/order_query/relative_order.rb', line 25 def position count - after.count end |
#previous(loop = true) ⇒ Object
33 34 35 |
# File 'lib/order_query/relative_order.rb', line 33 def previous(loop = true) record_unless_current before.first || (last if loop) end |
#records(mode) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/order_query/relative_order.rb', line 45 def records(mode) scope = (mode == :after ? order.scope : order.reverse_scope) query, query_args = build_query(mode) if query.present? scope.where(query, *query_args) else scope end end |