Class: OrderQuery::OrderCondition
- Inherits:
-
Object
- Object
- OrderQuery::OrderCondition
- Defined in:
- lib/order_query/order_condition.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#order ⇒ Object
readonly
Returns the value of attribute order.
-
#order_order ⇒ Object
readonly
Returns the value of attribute order_order.
-
#scope ⇒ Object
readonly
Returns the value of attribute scope.
Instance Method Summary collapse
- #col_name_sql ⇒ Object
-
#initialize(scope, spec) ⇒ OrderCondition
constructor
A new instance of OrderCondition.
- #ray? ⇒ Boolean
- #unique? ⇒ Boolean
-
#values_around(value, mode, strict = true) ⇒ Array
Valid order values before / after passed (depending on the mode).
Constructor Details
#initialize(scope, spec) ⇒ OrderCondition
Returns a new instance of OrderCondition.
5 6 7 8 9 10 11 12 13 |
# File 'lib/order_query/order_condition.rb', line 5 def initialize(scope, spec) spec = spec.dup = spec. @name = spec[0] @order = spec[1] || :asc @order_order = spec[2] || :desc @scope = scope @unique = .key?(:unique) ? !![:unique] : (name.to_s == scope.primary_key) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def end |
#order ⇒ Object (readonly)
Returns the value of attribute order.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def order @order end |
#order_order ⇒ Object (readonly)
Returns the value of attribute order_order.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def order_order @order_order end |
#scope ⇒ Object (readonly)
Returns the value of attribute scope.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def scope @scope end |
Instance Method Details
#col_name_sql ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/order_query/order_condition.rb', line 42 def col_name_sql sql = [:sql] if sql sql = sql.call if sql.respond_to?(:call) sql else scope.connection.quote_table_name(scope.table_name) + '.' + scope.connection.quote_column_name(name) end end |
#ray? ⇒ Boolean
19 20 21 |
# File 'lib/order_query/order_condition.rb', line 19 def ray? !order.is_a?(Array) end |
#unique? ⇒ Boolean
15 16 17 |
# File 'lib/order_query/order_condition.rb', line 15 def unique? @unique end |
#values_around(value, mode, strict = true) ⇒ Array
Returns valid order values before / after passed (depending on the mode).
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/order_query/order_condition.rb', line 26 def values_around(value, mode, strict = true) ord = order pos = ord.index(value) if pos dir = order_order if mode == :after && dir == :desc || mode == :before && dir == :asc ord.from pos + (strict ? 1 : 0) else ord.first pos + (strict ? 0 : 1) end else # default to all if current is not in sort order values ord end end |