class Ordy::Orm::ActiveRecord::Orderable::Order
Constants
- DELIMITER
Attributes
default[R]
model[R]
Public Class Methods
new(model)
click to toggle source
@param [ActiveRecord::Model] model
# File lib/ordy/orm/active_record/orderable.rb, line 17 def initialize(model) @model = model @orderables = {} end
Public Instance Methods
[](key)
click to toggle source
# File lib/ordy/orm/active_record/orderable.rb, line 26 def [](key) @orderables.fetch(key) end
associations(associations)
click to toggle source
associations comment: :scripts
@param [Array] associations
# File lib/ordy/orm/active_record/orderable.rb, line 43 def associations(associations) associations.each do |assoc, opts| column, association = if opts.is_a?(Hash) [opts.fetch(:column), opts.fetch(:as, assoc)] else [opts, assoc] end table_name = model.reflections.symbolize_keys.fetch(assoc).class_name.constantize.table_name @orderables[association] = { args: { association: association, table: table_name, column: column }, orderable: Orderable::ByAssociation } end end
columns(*column_names)
click to toggle source
columns :name, :email
@param [Array] column_names
# File lib/ordy/orm/active_record/orderable.rb, line 33 def columns(*column_names) column_names.each do |column| @orderables[column] = { args: { table: model.table_name, column: column }, orderable: Orderable::ByColumn } end end
each(&block)
click to toggle source
# File lib/ordy/orm/active_record/orderable.rb, line 22 def each(&block) @orderables.each(&block) end
query(query, &block)
click to toggle source
query :users do |scope, args|
scope.where(...).order(field: args[:direction])
end
@param [Symbol] query @param [Proc] block
# File lib/ordy/orm/active_record/orderable.rb, line 79 def query(query, &block) @orderables[query] = { args: {}, orderable: block } end
specified(args)
click to toggle source
specified(state: %w(new pending_migration migrating failed))
@param [Array] args
# File lib/ordy/orm/active_record/orderable.rb, line 62 def specified(args) args.each do |column, values| specified_column = "specified_#{column}".to_sym @orderables[specified_column] = { args: { table: model.table_name, column: column, values: values }, orderable: Orderable::BySpecified } end end